Compare commits
398 Commits
Author | SHA1 | Date | |
---|---|---|---|
5200da6eec | |||
b0523860d9 | |||
1a1215527f | |||
360c018c9e | |||
7bed964ab2 | |||
989d0a5682 | |||
b121c25184 | |||
e0d127b3e4 | |||
a0c56c74e1 | |||
f4b61a7f24 | |||
b2400fb883 | |||
f25832d1b6 | |||
cf363171aa | |||
38c8569d16 | |||
9791d15f39 | |||
80e7f5832b | |||
6e46ddaad3 | |||
8499e4aab2 | |||
5eae1851a1 | |||
c48a246ccb | |||
f084011a61 | |||
bd40cf194c | |||
2434af7e8a | |||
ced7fa9f01 | |||
28b559e812 | |||
76d776245b | |||
0d9f70492e | |||
b58f502dd6 | |||
5f367248c5 | |||
c2065cc3e2 | |||
034408971d | |||
490206b5b2 | |||
d8540819af | |||
d1a9aec526 | |||
e4b681a5a5 | |||
52036871d1 | |||
4fc6a804f5 | |||
08d2ca300a | |||
dc2ec0a8f9 | |||
2cfed952bb | |||
a7da137778 | |||
5ae2f87ce9 | |||
c4f6619fbd | |||
65edbc1424 | |||
1f2d7fa28f | |||
2407a0c4e2 | |||
7f8bfcc939 | |||
fae4cb9e56 | |||
063bbb02f2 | |||
15e1470c50 | |||
f602993aa9 | |||
271508c0a8 | |||
50f96d1c9c | |||
809544800b | |||
e757b06987 | |||
6f2da1baf1 | |||
f30dcad8a7 | |||
7dc235511e | |||
644c210fe2 | |||
68e8f98671 | |||
1228db6ac1 | |||
86596749fa | |||
76229a3601 | |||
95abdeb919 | |||
df0151d338 | |||
ee2f12fe81 | |||
10c104529f | |||
cbc8ec6508 | |||
8e7758e280 | |||
9aefbd189c | |||
b9d50584d8 | |||
e5f7390c09 | |||
797b1ff8bb | |||
09b738045c | |||
4fd690333a | |||
5ef5e25a7f | |||
87e8770cbc | |||
cac9d120be | |||
1ae0fadbf4 | |||
65497e089a | |||
2d763bd033 | |||
4ebf396cf5 | |||
6faa50d496 | |||
6fcd6298c8 | |||
5c16be5dbb | |||
e3abb6f178 | |||
70736be4eb | |||
1c3e7330f3 | |||
6e4c89b310 | |||
73b4a0ef5f | |||
d88002c4ed | |||
025c63c045 | |||
b189cbd46e | |||
a21ddb5914 | |||
e04a4c3923 | |||
ae0821e07b | |||
a508bece36 | |||
2c9969a8f4 | |||
dd9fc91f6f | |||
39d9838cc1 | |||
1397c7c624 | |||
c09fcba94f | |||
c77b38fc4f | |||
aef9b733e5 | |||
348208617b | |||
2c34c8e20f | |||
d19fa731d6 | |||
59bb1cc387 | |||
56909d0646 | |||
04da29c939 | |||
307f7a3024 | |||
e80bfa39f5 | |||
29714922ea | |||
88192114ac | |||
9d78208b76 | |||
d817bf0395 | |||
4d51056226 | |||
a607174a25 | |||
37d6a624b7 | |||
0c807bddaf | |||
a0470bfc66 | |||
b9463d23e8 | |||
04debd1623 | |||
9d31576cf5 | |||
8daca28a90 | |||
9899604261 | |||
687e1eabed | |||
eb09f34114 | |||
fbeb446ed7 | |||
92033ce0f5 | |||
9171bab5e5 | |||
f9819eb7b0 | |||
85728f0d15 | |||
9396849d56 | |||
6f5e5672bb | |||
b936e60876 | |||
fa4bd91213 | |||
81eeef7d3c | |||
a7b5134820 | |||
92a01c67ba | |||
71c23613b5 | |||
4f876995de | |||
9cf4a76196 | |||
9efe5287e4 | |||
8c4b34de4e | |||
93e3559dc3 | |||
caa0f63e1f | |||
a4e29e1244 | |||
599f2f43e3 | |||
3a453c5f73 | |||
98b313c75f | |||
8b796d80a7 | |||
719a8908a6 | |||
fed007ecae | |||
990443465f | |||
1f183b8a4e | |||
96556eb959 | |||
3ffeeac577 | |||
d7929a2340 | |||
667019a8c1 | |||
d9b46b4782 | |||
e249218a9d | |||
a2b1946b01 | |||
96a80f7ba0 | |||
9955fbf4f8 | |||
14966b0cd0 | |||
6e1a8f16a8 | |||
d106191e6a | |||
418cf6281e | |||
bdeb7d86b6 | |||
a0e0cc1038 | |||
78f6dec73b | |||
f6458f215f | |||
c7e0d547c4 | |||
fa54cfa0c3 | |||
31ea3f737c | |||
2a8a8065a8 | |||
d3ba002313 | |||
f18fd8d959 | |||
d54f7b13fb | |||
9c8b75206c | |||
15273c7f22 | |||
0ea8217c55 | |||
1735f28f5a | |||
8de4070f7f | |||
45e64f453f | |||
62dc5f2ac6 | |||
86c85a752e | |||
3de0ebf7fd | |||
1496ba0bbd | |||
f5974f6793 | |||
928ea3bb01 | |||
b7acb1d488 | |||
360d94dd67 | |||
671a813135 | |||
c005417f9b | |||
b5ec68bda3 | |||
b4ed29094d | |||
284ab031b8 | |||
6ad5064c09 | |||
3a8e723a36 | |||
dd3484b93f | |||
205773b700 | |||
f2039070e6 | |||
cf58a7eafd | |||
487749c25b | |||
48fb16b570 | |||
f94369dd6e | |||
fc0bd3b9e8 | |||
19946f1d19 | |||
562f56130a | |||
99f97adfc6 | |||
5ad7db722d | |||
a7d344d287 | |||
0ac215f9de | |||
4342155748 | |||
b561694bf0 | |||
cae9a8d608 | |||
88fbdba018 | |||
046067565a | |||
11299d9913 | |||
42ab233b08 | |||
4a92d7d1b2 | |||
2502ca6ccc | |||
651030ba93 | |||
8dfea9566e | |||
8cc54ce2a2 | |||
3abfcda8b5 | |||
cf0ae8f182 | |||
d90bf5c6dc | |||
955b550e95 | |||
b3cd46a5c8 | |||
3fdc8bfa3d | |||
e8f96a6e16 | |||
dc15df1aa7 | |||
05f5fac35b | |||
5bfcc5392d | |||
d2e830cce3 | |||
1e942be639 | |||
576009bad0 | |||
f71108a214 | |||
7109bd52f2 | |||
0f6effa263 | |||
8b0301ed00 | |||
4f56fb125e | |||
6487cd8c6f | |||
06e5c25383 | |||
36e5ae4a25 | |||
245e43ea8c | |||
52871c781a | |||
f994ada576 | |||
147a6e49dc | |||
be24ee435c | |||
9fac285b69 | |||
3ed5f9cd15 | |||
17e70ff8ec | |||
6dab119650 | |||
f80eb89d57 | |||
f6c2902fe4 | |||
1e890a8a0a | |||
aa1a84e677 | |||
9395f310d6 | |||
b99bb3d4bb | |||
4f66f096ff | |||
7f5f2284f3 | |||
59f9f4fca1 | |||
55284e418c | |||
20d4ffde6e | |||
78e5d4df9d | |||
1118ec9653 | |||
7d6c85be42 | |||
0192a6cb12 | |||
0e01a81219 | |||
36edf20273 | |||
a1bf19dbdf | |||
0ad739e78b | |||
ff9509b901 | |||
7e496b1979 | |||
448517032e | |||
a171e92e6c | |||
06e9bf9b0a | |||
7d9ec8cea0 | |||
5b4553ff0c | |||
d4ce7aef59 | |||
8b6df2e23f | |||
e2ff5846df | |||
24efeff788 | |||
4f359e62df | |||
e6fd2bed4d | |||
9fb6510135 | |||
7206b61838 | |||
e8ab0b3e8f | |||
843788580e | |||
4ceb3d890d | |||
3f8995b25e | |||
37e0cefc79 | |||
f026741dbb | |||
044b121e01 | |||
d57c3b4f89 | |||
960f7d5f2e | |||
2f61381651 | |||
ba6e931e21 | |||
440aa0d369 | |||
f42d4b5fa2 | |||
5d9fa2c484 | |||
f5c86fa171 | |||
f9019ce62d | |||
ee485e1728 | |||
8f2a6f8387 | |||
908bf3b117 | |||
6a739afd25 | |||
506490e32d | |||
846771f2a1 | |||
759b7584e0 | |||
e5cb224598 | |||
e32df1b405 | |||
db9f91b687 | |||
0941357068 | |||
d8993c52d0 | |||
6424b2dd03 | |||
2a4eb3ed1a | |||
c9fa00cce1 | |||
18eedbc02d | |||
ef9f63fe59 | |||
f8ce788425 | |||
6c1bd95643 | |||
2ed7ee8f71 | |||
2e63709450 | |||
6611d639a8 | |||
fe124e6ab3 | |||
fee0a8527d | |||
2f6b00403f | |||
dbe2c117e3 | |||
c4b1ccb6d6 | |||
2c70ee7e43 | |||
f7826616b8 | |||
9f476a12dd | |||
6f3cf0ae50 | |||
cd024e21f0 | |||
c4c470c1f3 | |||
dc9ad8df80 | |||
74d6225993 | |||
e1e0c5035d | |||
adf6d0eb82 | |||
90df435345 | |||
83d57211db | |||
0a8eeb2827 | |||
0c324c42f4 | |||
3adf54a952 | |||
8076c66a4c | |||
f9c583a636 | |||
30d536b19c | |||
1957899146 | |||
b52c83d88a | |||
27ff388413 | |||
d4306f7768 | |||
5d0a57c97d | |||
a87ba467ae | |||
7df7cd01eb | |||
098d805a8b | |||
4a21034a00 | |||
7904e359f2 | |||
0c8a94beb8 | |||
c13a573792 | |||
f9b42e12ae | |||
5c2031b768 | |||
49643882d4 | |||
175ddaa3a1 | |||
cc1d6e97b8 | |||
79b96ab301 | |||
44d9316023 | |||
5b0c9a74fb | |||
3429fc3e4c | |||
d11d8d5353 | |||
1742bd6ded | |||
9f6e118ea0 | |||
717bbd3bb5 | |||
e8ebe4de14 | |||
0ff614ccd4 | |||
d0a77b7e0c | |||
2815889090 | |||
1317956663 | |||
a2303d8895 | |||
2161c793dc | |||
a2f943db8f | |||
23a31b9c00 | |||
2591d1b94b | |||
300f97f102 | |||
7e3f6c3066 | |||
601d232064 | |||
8854ac84ad | |||
0302c3fbd4 | |||
6b6fdc6cfe | |||
7126ce86ec | |||
760bf52f75 | |||
6d791d31de | |||
21adc98d70 | |||
6fd7a56568 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -45,6 +45,7 @@ intltool-merge.in
|
|||||||
intltool-update.in
|
intltool-update.in
|
||||||
libtool
|
libtool
|
||||||
m4/
|
m4/
|
||||||
|
man/gnome-shell.1
|
||||||
omf.make
|
omf.make
|
||||||
po/*.gmo
|
po/*.gmo
|
||||||
po/gnome-shell.pot
|
po/gnome-shell.pot
|
||||||
|
331
HACKING
Normal file
331
HACKING
Normal file
@ -0,0 +1,331 @@
|
|||||||
|
Coding guide
|
||||||
|
============
|
||||||
|
|
||||||
|
Our goal is to have all JavaScript code in GNOME follow a consistent style. In
|
||||||
|
a dynamic language like JavaScript, it is essential to be rigorous about style
|
||||||
|
(and unit tests), or you rapidly end up with a spaghetti-code mess.
|
||||||
|
|
||||||
|
A quick note
|
||||||
|
------------
|
||||||
|
|
||||||
|
Life isn't fun if you can't break the rules. If a rule seems unnecessarily
|
||||||
|
restrictive while you're coding, ignore it, and let the patch reviewer decide
|
||||||
|
what to do.
|
||||||
|
|
||||||
|
Indentation and whitespace
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Use four-space indents. Braces are on the same line as their associated
|
||||||
|
statements. You should only omit braces if *both* sides of the statement are
|
||||||
|
on one line.
|
||||||
|
|
||||||
|
* One space after the `function` keyword. No space between the function name
|
||||||
|
* in a declaration or a call. One space before the parens in the `if`
|
||||||
|
* statements, or `while`, or `for` loops.
|
||||||
|
|
||||||
|
function foo(a, b) {
|
||||||
|
let bar;
|
||||||
|
|
||||||
|
if (a > b)
|
||||||
|
bar = do_thing(a);
|
||||||
|
else
|
||||||
|
bar = do_thing(b);
|
||||||
|
|
||||||
|
if (var == 5) {
|
||||||
|
for (let i = 0; i < 10; i++) {
|
||||||
|
print(i);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print(20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Semicolons
|
||||||
|
----------
|
||||||
|
|
||||||
|
JavaScript allows omitting semicolons at the end of lines, but don't. Always
|
||||||
|
end statements with a semicolon.
|
||||||
|
|
||||||
|
js2-mode
|
||||||
|
--------
|
||||||
|
|
||||||
|
If using Emacs, do not use js2-mode. It is outdated and hasn't worked for a
|
||||||
|
while. emacs now has a built-in JavaScript mode, js-mode, based on
|
||||||
|
espresso-mode. It is the de facto emacs mode for JavaScript.
|
||||||
|
|
||||||
|
File naming and creation
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
For JavaScript files, use lowerCamelCase-style names, with a `.js` extension.
|
||||||
|
|
||||||
|
We only use C where gjs/gobject-introspection is not available for the task, or
|
||||||
|
where C would be cleaner. To work around limitations in
|
||||||
|
gjs/gobject-introspection itself, add a new method in `shell-util.[ch]`.
|
||||||
|
|
||||||
|
Like many other GNOME projects, we prefix our C source filenames with the
|
||||||
|
library name followed by a dash, e.g. `shell-app-system.c`. Create a
|
||||||
|
`-private.h` header when you want to share code internally in the
|
||||||
|
library. These headers are not installed, distributed or introspected.
|
||||||
|
|
||||||
|
Imports
|
||||||
|
-------
|
||||||
|
|
||||||
|
Use UpperCamelCase when importing modules to distinguish them from ordinary
|
||||||
|
variables, e.g.
|
||||||
|
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
|
||||||
|
Imports should be categorized into one of two places. The top-most import block
|
||||||
|
should contain only "environment imports". These are either modules from
|
||||||
|
gobject-introspection or modules added by gjs itself.
|
||||||
|
|
||||||
|
The second block of imports should contain only "application imports". These
|
||||||
|
are the JS code that is in the gnome-shell codebase,
|
||||||
|
e.g. `imports.ui.popupMenu`.
|
||||||
|
|
||||||
|
Each import block should be sorted alphabetically. Don't import modules you
|
||||||
|
don't use.
|
||||||
|
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const Params = imports.misc.params;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
|
const Util = imports.misc.util;
|
||||||
|
|
||||||
|
The alphabetical ordering should be done independently of the location of the
|
||||||
|
location. Never reference `imports` in actual code.
|
||||||
|
|
||||||
|
Constants
|
||||||
|
---------
|
||||||
|
|
||||||
|
We use CONSTANTS_CASE to define constants. All constants should be directly
|
||||||
|
under the imports:
|
||||||
|
|
||||||
|
const MY_DBUS_INTERFACE = 'org.my.Interface';
|
||||||
|
|
||||||
|
Variable declaration
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Always use either `const` or `let` when defining a variable.
|
||||||
|
|
||||||
|
// Iterating over an array
|
||||||
|
for (let i = 0; i < arr.length; ++i) {
|
||||||
|
let item = arr[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iterating over an object's properties
|
||||||
|
for (let prop in someobj) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
If you use "var" then the variable is added to function scope, not block scope.
|
||||||
|
See [What's new in JavaScript 1.7](https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.7#Block_scope_with_let_%28Merge_into_let_Statement%29)
|
||||||
|
|
||||||
|
Classes
|
||||||
|
-------
|
||||||
|
|
||||||
|
There are many approaches to classes in JavaScript. We use our own class framework
|
||||||
|
(sigh), which is built in gjs. The advantage is that it supports inheriting from
|
||||||
|
GObjects, although this feature isn't used very often in the Shell itself.
|
||||||
|
|
||||||
|
const IconLabelMenuItem = new Lang.Class({
|
||||||
|
Name: 'IconLabelMenuItem',
|
||||||
|
Extends: PopupMenu.PopupMenuBaseItem,
|
||||||
|
|
||||||
|
_init: function(icon, label) {
|
||||||
|
this.parent({ reactive: false });
|
||||||
|
this.addActor(icon);
|
||||||
|
this.addActor(label);
|
||||||
|
},
|
||||||
|
|
||||||
|
open: function() {
|
||||||
|
log("menu opened!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
* 'Name' is required. 'Extends' is optional. If you leave it out, you will
|
||||||
|
automatically inherit from Object.
|
||||||
|
|
||||||
|
* Leave a blank line between the "class header" (Name, Extends, and other
|
||||||
|
things) and the "class body" (methods). Leave a blank line between each
|
||||||
|
method.
|
||||||
|
|
||||||
|
* No space before the colon, one space after.
|
||||||
|
|
||||||
|
* No trailing comma after the last item.
|
||||||
|
|
||||||
|
* Make sure to use a semicolon after the closing paren to the class. It's
|
||||||
|
still a giant function call, even though it may resemble a more
|
||||||
|
conventional syntax.
|
||||||
|
|
||||||
|
GObject Introspection
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
GObject Introspection is a powerful feature that allows us to have native
|
||||||
|
bindings for almost any library built around GObject. If a library requires
|
||||||
|
you to inherit from a type to use it, you can do so:
|
||||||
|
|
||||||
|
const MyClutterActor = new Lang.Class({
|
||||||
|
Name: 'MyClutterActor',
|
||||||
|
Extends: Clutter.Actor,
|
||||||
|
|
||||||
|
vfunc_get_preferred_width: function(actor, forHeight) {
|
||||||
|
return [100, 100];
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_get_preferred_height: function(actor, forWidth) {
|
||||||
|
return [100, 100];
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_paint: function(actor) {
|
||||||
|
let alloc = this.get_allocation_box();
|
||||||
|
Cogl.set_source_color4ub(255, 0, 0, 255);
|
||||||
|
Cogl.rectangle(alloc.x1, alloc.y1,
|
||||||
|
alloc.x2, alloc.y2);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Translatable strings, `environment.js`
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
We use gettext to translate the GNOME Shell into all the languages that GNOME
|
||||||
|
supports. The `gettext` function is aliased globally as `_`, you do not need to
|
||||||
|
explicitly import it. This is done through some magic in the
|
||||||
|
[environment.js](http://git.gnome.org/browse/gnome-shell/tree/js/ui/environment.js)
|
||||||
|
file. If you can't find a method that's used, it's probably either in gjs itself
|
||||||
|
or installed on the global object from the Environment.
|
||||||
|
|
||||||
|
Use 'single quotes' for programming strings that should not be translated
|
||||||
|
and "double quotes" for strings that the user may see. This allows us to
|
||||||
|
quickly find untranslated or mistranslated strings by grepping through the
|
||||||
|
sources for double quotes without a gettext call around them.
|
||||||
|
|
||||||
|
`actor` and `_delegate`
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
gjs allows us to set so-called "expando properties" on introspected objects,
|
||||||
|
allowing us to treat them like any other. Because the Shell was built before
|
||||||
|
you could inherit from GTypes natively in JS, we usually have a wrapper class
|
||||||
|
that has a property called `actor`. We call this wrapper class the "delegate".
|
||||||
|
|
||||||
|
We sometimes use expando properties to set a property called `_delegate` on
|
||||||
|
the actor itself:
|
||||||
|
|
||||||
|
const MyClass = new Lang.Class({
|
||||||
|
Name: 'MyClass',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.actor = new St.Button({ text: "This is a button" });
|
||||||
|
this.actor._delegate = this;
|
||||||
|
|
||||||
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
|
},
|
||||||
|
|
||||||
|
_onClicked: function(actor) {
|
||||||
|
actor.set_label("You clicked the button!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
The 'delegate' property is important for anything which trying to get the
|
||||||
|
delegate object from an associated actor. For instance, the drag and drop
|
||||||
|
system calls the `handleDragOver` function on the delegate of a "drop target"
|
||||||
|
when the user drags an item over it. If you do not set the `_delegate`
|
||||||
|
property, your actor will not be able to be dropped onto.
|
||||||
|
|
||||||
|
Functional style
|
||||||
|
----------------
|
||||||
|
|
||||||
|
JavaScript Array objects offer a lot of common functional programming
|
||||||
|
capabilities such as forEach, map, filter and so on. You can use these when
|
||||||
|
they make sense, but please don't have a spaghetti mess of function programming
|
||||||
|
messed in a procedural style. Use your best judgment.
|
||||||
|
|
||||||
|
Closures
|
||||||
|
--------
|
||||||
|
|
||||||
|
`this` will not be captured in a closure, it is relative to how the closure is
|
||||||
|
invoked, not to the value of this where the closure is created, because "this"
|
||||||
|
is a keyword with a value passed in at function invocation time, it is not a
|
||||||
|
variable that can be captured in closures.
|
||||||
|
|
||||||
|
All closures should be wrapped with a Lang.bind.
|
||||||
|
|
||||||
|
const Lang = imports.lang;
|
||||||
|
|
||||||
|
let closure = Lang.bind(this, function() { this._fnorbate(); });
|
||||||
|
|
||||||
|
A more realistic example would be connecting to a signal on a method of a
|
||||||
|
prototype:
|
||||||
|
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const FnorbLib = imports.fborbLib;
|
||||||
|
|
||||||
|
const MyClass = new Lang.Class({
|
||||||
|
_init: function() {
|
||||||
|
let fnorb = new FnorbLib.Fnorb();
|
||||||
|
fnorb.connect('frobate', Lang.bind(this, this._onFnorbFrobate));
|
||||||
|
},
|
||||||
|
|
||||||
|
_onFnorbFrobate: function(fnorb) {
|
||||||
|
this._updateFnorb();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object literal syntax
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
In JavaScript, these are equivalent:
|
||||||
|
|
||||||
|
foo = { 'bar': 42 };
|
||||||
|
foo = { bar: 42 };
|
||||||
|
|
||||||
|
and so are these:
|
||||||
|
|
||||||
|
var b = foo['bar'];
|
||||||
|
var b = foo.bar;
|
||||||
|
|
||||||
|
If your usage of an object is like an object, then you're defining "member
|
||||||
|
variables." For member variables, use the no-quotes no-brackets syntax: `{ bar:
|
||||||
|
42 }` `foo.bar`.
|
||||||
|
|
||||||
|
If your usage of an object is like a hash table (and thus conceptually the keys
|
||||||
|
can have special chars in them), don't use quotes, but use brackets: `{ bar: 42
|
||||||
|
}`, `foo['bar']`.
|
||||||
|
|
||||||
|
Getters, setters, and Tweener
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
Getters and setters should be used when you are dealing with an API that is
|
||||||
|
designed around setting properties, like Tweener. If you want to animate an
|
||||||
|
arbitrary property, create a getter and setter, and use Tweener to animate the
|
||||||
|
property.
|
||||||
|
|
||||||
|
const ANIMATION_TIME = 2000;
|
||||||
|
|
||||||
|
const MyClass = new Lang.Class({
|
||||||
|
Name: 'MyClass',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.actor = new St.BoxLayout();
|
||||||
|
this._position = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
get position() {
|
||||||
|
return this._position;
|
||||||
|
},
|
||||||
|
|
||||||
|
set position(value) {
|
||||||
|
this._position = value;
|
||||||
|
this.actor.set_position(value, value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let myThing = new MyClass();
|
||||||
|
Tweener.addTween(myThing,
|
||||||
|
{ position: 100,
|
||||||
|
time: ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad' });
|
@ -1,7 +1,11 @@
|
|||||||
# Point to our macro directory and pick up user flags from the environment
|
# Point to our macro directory and pick up user flags from the environment
|
||||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||||
|
|
||||||
SUBDIRS = data js src browser-plugin tests po man docs
|
SUBDIRS = data js src browser-plugin tests po docs
|
||||||
|
|
||||||
|
if ENABLE_MAN
|
||||||
|
SUBDIRS += man
|
||||||
|
endif
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
.project \
|
.project \
|
||||||
@ -13,6 +17,7 @@ EXTRA_DIST = \
|
|||||||
DIST_EXCLUDE = \
|
DIST_EXCLUDE = \
|
||||||
.gitignore \
|
.gitignore \
|
||||||
gnome-shell.doap \
|
gnome-shell.doap \
|
||||||
|
HACKING \
|
||||||
MAINTAINERS \
|
MAINTAINERS \
|
||||||
tools/build/*
|
tools/build/*
|
||||||
|
|
||||||
@ -20,4 +25,4 @@ distcheck-hook:
|
|||||||
@echo "Checking disted files against files in git"
|
@echo "Checking disted files against files in git"
|
||||||
@$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE)
|
@$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE)
|
||||||
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
|
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man
|
||||||
|
179
NEWS
179
NEWS
@ -1,3 +1,182 @@
|
|||||||
|
3.7.2
|
||||||
|
=====
|
||||||
|
* Enforce RTL in he for messages that might end up as LTR [Florian; #686630]
|
||||||
|
* gdm: Move logo into the panel [Florian; #685852]
|
||||||
|
* Hide notifications when closed button is clicked [Jasper, Florian; #682237]
|
||||||
|
* Tweak screenShield animations [Rui; #686745]
|
||||||
|
* Restore Fittsability of summary items in message tray [Florian; #686474]
|
||||||
|
* Save screencasts as recent item [Ray; #680647]
|
||||||
|
* overview: Resize window captions on content change [Giovanni, Alex; #620874]
|
||||||
|
* App search: Match GenericName too [Matthias; #687121]
|
||||||
|
* runDialog: Better match style of other modal dialogs [Florian, Allan; #687127]
|
||||||
|
* Improve the button insensitive style [Stéphane; #687110]
|
||||||
|
* network: Don't use a global switch for all VPN connections [Giovanni; #682929]
|
||||||
|
* appMenu: Update on icon theme changes [Florian; #687224]
|
||||||
|
* Show 'Log out' in more situations [Matthias; #686736]
|
||||||
|
* Add a setting to force the 'Log out' menuitem [Matthias; #686057]
|
||||||
|
* overview: Improve styling of search box [Stéphane; #686479]
|
||||||
|
* Implement 'disable-user-list' in login screen [Ray; #660660]
|
||||||
|
* Fix auto-scroll to bottom in chat notifications [Sjoerd; #686571]
|
||||||
|
* Show feedback notifications when user is busy [Stéphane; #662900]
|
||||||
|
* Disable login button when there is no input [Stéphane; #687112]
|
||||||
|
* Use non-linear overview shade for background [Giovanni, Pierre-Eric; #669798]
|
||||||
|
* Reduce blocking in compositor thread [Simon, Jasper; #687465]
|
||||||
|
* network: new country-specific type to gather providers [Aleksander; #687356]
|
||||||
|
* Update man page [Matthias; #680601]
|
||||||
|
* st-entry: Change the pointer cursor on enter/leave events [Thomas; #687130]
|
||||||
|
* screenShield: Blur and desaturate the background [Giovanni, Cosimo; #682536]
|
||||||
|
* Change height of chat notifications to have more context [Carlos; #665255]
|
||||||
|
* screenShield: Account for motion velocity when hiding [Giovanni; #682537]
|
||||||
|
* screenShield: hide the cursor while the lock screen is on [Giovanni; #682535]
|
||||||
|
* Support remote search provider settings [Cosimo; #687491]
|
||||||
|
* unlockDialog: Improve label of confirmation button [Stéphane; #687656]
|
||||||
|
* userMenu: Rename "System Settings" item to "Settings" [Elad; #687738]
|
||||||
|
* messageTray: Add keybinding to focus current notification [Stéphane; #652082]
|
||||||
|
* Remove shell-screen-grabber [Neil; #685915]
|
||||||
|
* main: Stop using Metacity's keybinding files [Florian; #687672]
|
||||||
|
* Bluetooth: Remove ObexFTP functionality [Bastien; #688160]
|
||||||
|
* a11y: Also set WM theme when HighContrast is switched on [Cosimo; #688256]
|
||||||
|
* network: Rework multiple NIC support [Giovanni; #677142]
|
||||||
|
* Rework keybindings to allow selective blocking/processing [Florian; #688202]
|
||||||
|
* recorder: Show indicator on primary monitor [Adel; #688470]
|
||||||
|
* recorder: Set frame duration to fix broken video headers [Adel; #688487]
|
||||||
|
* Misc. bugfixes and cleanups [Florian, Jasper, Giovanni, Matthew, Stéphane,
|
||||||
|
Allan, Daiki, Owen, Alejandro, Jean-François, Cosimo, Sebastian, Adel, Alban;
|
||||||
|
#686484, #686728, #686805, #686574, #686763, #682428, #687132, #685239,
|
||||||
|
#687189, #687226, #658091, #670687, #687457, #687242, #687287, #687020,
|
||||||
|
#686583, #661194, #687491, #657315, #687958, #683986, #688089, #687708,
|
||||||
|
#686530, #684810, #688181, #688475, #688557, #688507, #638351]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Elad Alfassa, Matthew Barnes, Alban Browaeys, Giovanni Campagna,
|
||||||
|
Cosimo Cecchi, Matthias Clasen, Allan Day, Stéphane Démurget,
|
||||||
|
Jean-François Fortin Tam, Adel Gadllah, Alex Hultman, Sebastian Keller,
|
||||||
|
Rui Matos, Simon McVittie, Aleksander Morgado, Florian Müllner,
|
||||||
|
Bastien Nocera, Pierre-Eric Pelloux-Prayer, Alejandro Piñeiro, Neil Roberts,
|
||||||
|
Sjoerd Simons, Carlos Soriano Sánchez, Jasper St. Pierre, Ray Strode,
|
||||||
|
Owen Taylor, Daiki Ueno, Thomas Wood
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Dušan Kazik [sk], Pavol Klačanský [sk], Piotr Drąg [pl], Yuri Myasoedov [ru],
|
||||||
|
Marek Černocký [cs], Kjartan Maraas [nb], Wolfgang Stöggl [de],
|
||||||
|
Yaron Shahrabani [he], Fran Diéguez [gl], Mattias Põldaru [et]
|
||||||
|
|
||||||
|
3.7.1
|
||||||
|
=====
|
||||||
|
* Add shortcut to open application view directly [Jeremy; #685738]
|
||||||
|
* Expose '<Super>F10' shortcut in System Settings [Florian; #672909]
|
||||||
|
* Clean up timestamp format in chat notifications [Carlos; #680989]
|
||||||
|
* loginScreen: Add support for 'disable-restart-buttons' [Florian; #686247]
|
||||||
|
* Update textures automatically on file changes [Florian; #679268]
|
||||||
|
* Implement org.gnome.ScreenSaver.GetActiveTime [Giovanni; #686064]
|
||||||
|
* Add missing translations for GSetting schema [Giovanni; #686413]
|
||||||
|
* Hide workspace switcher completely when it's not necessary [Seif; #686483]
|
||||||
|
* Explicitly load gnome-screensaver when not running GDM [Tim; #683060]
|
||||||
|
* Port to GnomeIdleMonitor [Jasper; #682224]
|
||||||
|
* Set Empathy as preferred handler when delegating channels [Xavier; #686296]
|
||||||
|
* Allow testing GDM login dialog from the session [Giovanni; #683725]
|
||||||
|
* Use all available space for windows in window picker [Jasper, Pierre-Eric;
|
||||||
|
#582650]
|
||||||
|
* Use logind for suspend if available [Florian; #686482]
|
||||||
|
* Misc. fixes and cleanups [Jasper, Florian, Adel, Rui; #677426, #680426,
|
||||||
|
#686233, #686241, #686318, #686240, #686484, #686002, #684650, #686487]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jeremy Bicha, Giovanni Campagna, Xavier Claessens, Adel Gadllah, Seif Lotfy,
|
||||||
|
Tim Lunn, Rui Matos, Florian Müllner, Pierre-Eric Pelloux-Prayer,
|
||||||
|
Carlos Soriano, Jasper St. Pierre
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Andika Triwidada [id], Matej Urbančič [sl], Ihar Hrachyshka [be],
|
||||||
|
Daniel Mustieles [es], Fran Diéguez [gl], Takayuki KUSANO [ja],
|
||||||
|
Мирослав Николић [sr, sr@latin], Dušan Kazik [sk], Tom Tryfonidis [el]
|
||||||
|
|
||||||
|
3.6.1
|
||||||
|
=====
|
||||||
|
* dash: Make padding even on the top/bottom of the dash [Jasper; #684619]
|
||||||
|
* Fix a crash when dragging search results [Jasper; #684888]
|
||||||
|
* workspaceThumbnail: Fix dragging with static workspaces [Jasper; #684641]
|
||||||
|
* Really hide 'Show Keyboard Layout' on the lock screen [Matthias]
|
||||||
|
* Misc. improvements to jhbuild setup [Owen; #685352, #685353, #685354, #685355]
|
||||||
|
* Show message tray in Ctrl+Alt+Tab outside of the overview [Jasper, Florian;
|
||||||
|
#684633, #685914]
|
||||||
|
* Disable hotplug sniffer on remote filesystems [Jasper; #684093]
|
||||||
|
* userMenu: Remove 'Switch Session' item [Florian; #685062]
|
||||||
|
* unlockDialog: Make prompt entry insensitive while logging in [Jasper; #685444]
|
||||||
|
* messageTray: Don't animate desktop clone for failed grabs [Jasper; #685342]
|
||||||
|
* Fix crash on dragging windows between workspaces [Ryan; #681399]
|
||||||
|
* userMenu: Ignore 'lock-enabled' setting for user switching [Florian; #685536]
|
||||||
|
* gdm: Fix key-focus on first user [Adel; #684650]
|
||||||
|
* Make grid button insensitive when dragging non-favorites [Jasper; #685313]
|
||||||
|
* Calendar: hide all actions when on the login screen [Matthias; #685142]
|
||||||
|
* Adapt unlock dialog layout for the login screen [Florian; #685201]
|
||||||
|
* Make focus-follows-mouse work better with Shell UI [Florian; #678169]
|
||||||
|
* Improve look of screen shield [Jasper; #685919]
|
||||||
|
* Fix keynav in the login screen [Florian; #684730]
|
||||||
|
* dateMenu: Hide "Open Calendar" item if calendar unavailable [Florian; #686050]
|
||||||
|
* unlockDialog: Reset UI on verification failure [Giovanni; #685441]
|
||||||
|
* Show unlock dialog on primary monitor when using keynav [Giovanni; #685855]
|
||||||
|
* Fix height changes of entries when entering text [Florian; #685534]
|
||||||
|
* Fix show-apps label after successful drags [Florian; #684627]
|
||||||
|
* Misc. bugfixes and cleanups [Jasper, Olivier, Florian, Owen, Adel, Tanner, Tim, Matthias; #685434, #685511, #685466, #685341, #685156, #681159, #673189, #686016, 684869, #686079, #686063
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jasper St. Pierre
|
||||||
|
Matthias Clasen
|
||||||
|
Owen Taylor
|
||||||
|
Olivier Blin
|
||||||
|
Florian Müllner
|
||||||
|
Ryan Lortie
|
||||||
|
Adel Gadllah
|
||||||
|
Tanner Doshier
|
||||||
|
Tim Lunn
|
||||||
|
Giovanni Campagna
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Tobias Endrigkeit [de], Rudolfs Mazurs [lv], Ask H. Larsen [da],
|
||||||
|
Shankar Prasad [kn], Changwoo Ryu [ko], Chris Leonard [en_GB],
|
||||||
|
Arash Mousavi [fa], Theppitak Karoonboonyanan [th], Seán de Búrca [ga],
|
||||||
|
Yaron Shahrabani [he], Alexander Shopov [bg], Žygimantas Beručka [lt],
|
||||||
|
Milo Casagrande [it], Kjartan Maraas [nb], Kris Thomsen [da],
|
||||||
|
Aurimas Černius [lt], Yuri Myasoedov [ru], Мирослав Николић [sr],
|
||||||
|
Marek Černocký [cs], Gabor Kelemen [hu], Ihar Hrachyshka [be],
|
||||||
|
Chao-Hsiung Liao [zh_HK, zh_TW], Eleanor Chen [zh_CN],
|
||||||
|
Carles Ferrando [ca@valencia], Vicent Cubells [ca], Daniel Korostil [uk],
|
||||||
|
Alexandre Franke [fr], Piotr Drąg [pl]
|
||||||
|
|
||||||
|
3.6.0
|
||||||
|
=====
|
||||||
|
* keyboard: Make input source items accessible [Florian; #684462]
|
||||||
|
* Don't show network dialogs in the lock screen [Giovanni; #684384]
|
||||||
|
* popupMenu: Fix initial visibility of settings items [Florian; #684473]
|
||||||
|
* userMenu: Close menu immediately on user/session switch [Florian; #684459]
|
||||||
|
* Fix alignment of search section headers in RTL locales [Florian; #684379]
|
||||||
|
* screenShield: Fix unlock animation [Florian; #684591]
|
||||||
|
* Don't open the tray from a dwell while in a modal grab [Jasper; #684458]
|
||||||
|
* userMenu: Fix texture updates on icon changes [Florian; #679268]
|
||||||
|
* Fix a11y support in the login screen [Florian, Ray; #684727, #684728, #684748]
|
||||||
|
* Make On-Screen-Keyboard usable with new message tray [Giovanni, Florian;
|
||||||
|
#683546]
|
||||||
|
* Fix initial visibility of input volume in lock-screen [Florian; #684611]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Florian Müllner, Jasper St. Pierre, Ray Strode
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Matej Urbančič [sl], Dr.T.Vasudevan [ta], Piotr Drąg [pl], A S Alam [pa],
|
||||||
|
Alexander Shopov [bg], Nilamdyuti Goswami [as], Chandan Kumar [hi],
|
||||||
|
Khaled Hosny [ar], Ibrahim Saed [ar], Sandeep Sheshrao Shedmake [mr],
|
||||||
|
Tom Tryfonidis [el], Theppitak Karoonboonyanan [th], Alexandre Franke [fr],
|
||||||
|
Fran Diéguez [gl], Gabor Kelemen [hu], Ani Peter [ml], Daniel Mustieles [es],
|
||||||
|
Мирослав Николић [sr, sr@latin], Duarte Loreto [pt], ManojKumar Giri [or],
|
||||||
|
Ihar Hrachyshka [be], Aurimas Černius [lt], Djavan Fagundes [pt_BR],
|
||||||
|
Changwoo Ryu [ko], Bruce Cowan [en_GB], Kris Thomsen [da], Gil Forcada [ca],
|
||||||
|
Yaron Shahrabani [he], Milo Casagrande [it], Ville-Pekka Vainio [fi],
|
||||||
|
YunQiang Su [zh_CN], Carles Ferrando [ca@valencia], Mario Blättermann [de],
|
||||||
|
Rajesh Ranjan [hi], Yuri Myasoedov [ru], Rūdolfs Mazurs [lv],
|
||||||
|
Jiro Matsuzawa [ja], Mattias Põldaru [et], Timur Zhamakeev [ky],
|
||||||
|
Petr Kovar [cs], Chao-Hsiung Liao [zh_HK,zh_TW], Andika Triwidada [id]
|
||||||
|
|
||||||
3.5.92
|
3.5.92
|
||||||
======
|
======
|
||||||
* Login/UnlockDialog: Don't reset immediately if auth fails [Giovanni; #682544]
|
* Login/UnlockDialog: Don't reset immediately if auth fails [Giovanni; #682544]
|
||||||
|
@ -153,8 +153,6 @@ NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
|||||||
/* global initialization routine, called once when plugin
|
/* global initialization routine, called once when plugin
|
||||||
is loaded */
|
is loaded */
|
||||||
|
|
||||||
g_type_init ();
|
|
||||||
|
|
||||||
g_debug ("plugin loaded");
|
g_debug ("plugin loaded");
|
||||||
|
|
||||||
memcpy (&funcs, pfuncs, sizeof (funcs));
|
memcpy (&funcs, pfuncs, sizeof (funcs));
|
||||||
|
37
configure.ac
37
configure.ac
@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.5.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.7.2],[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])
|
||||||
@ -36,6 +36,8 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
|||||||
|
|
||||||
PKG_PROG_PKG_CONFIG([0.22])
|
PKG_PROG_PKG_CONFIG([0.22])
|
||||||
|
|
||||||
|
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
||||||
|
|
||||||
GLIB_GSETTINGS
|
GLIB_GSETTINGS
|
||||||
|
|
||||||
# Get a value to substitute into gnome-shell.in
|
# Get a value to substitute into gnome-shell.in
|
||||||
@ -52,7 +54,7 @@ AC_MSG_CHECKING([for GStreamer (needed for recording functionality)])
|
|||||||
if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
|
if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
build_recorder=true
|
build_recorder=true
|
||||||
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11"
|
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0"
|
||||||
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0 xfixes gl)
|
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0 xfixes gl)
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
@ -63,9 +65,9 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
|||||||
CLUTTER_MIN_VERSION=1.11.11
|
CLUTTER_MIN_VERSION=1.11.11
|
||||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||||
GJS_MIN_VERSION=1.33.2
|
GJS_MIN_VERSION=1.33.2
|
||||||
MUTTER_MIN_VERSION=3.5.92
|
MUTTER_MIN_VERSION=3.7.2
|
||||||
GTK_MIN_VERSION=3.3.9
|
GTK_MIN_VERSION=3.3.9
|
||||||
GIO_MIN_VERSION=2.31.6
|
GIO_MIN_VERSION=2.35.0
|
||||||
LIBECAL_MIN_VERSION=3.5.3
|
LIBECAL_MIN_VERSION=3.5.3
|
||||||
LIBEDATASERVER_MIN_VERSION=3.5.3
|
LIBEDATASERVER_MIN_VERSION=3.5.3
|
||||||
LIBEDATASERVERUI_MIN_VERSION=3.5.3
|
LIBEDATASERVERUI_MIN_VERSION=3.5.3
|
||||||
@ -74,8 +76,9 @@ TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
|||||||
POLKIT_MIN_VERSION=0.100
|
POLKIT_MIN_VERSION=0.100
|
||||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||||
GCR_MIN_VERSION=3.3.90
|
GCR_MIN_VERSION=3.3.90
|
||||||
GNOME_DESKTOP_REQUIRED_VERSION=3.5.1
|
GNOME_DESKTOP_REQUIRED_VERSION=3.7.1
|
||||||
GNOME_MENUS_REQUIRED_VERSION=3.5.3
|
GNOME_MENUS_REQUIRED_VERSION=3.5.3
|
||||||
|
NETWORKMANAGER_MIN_VERSION=0.9.7
|
||||||
|
|
||||||
# Collect more than 20 libraries for a prize!
|
# Collect more than 20 libraries for a prize!
|
||||||
PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
||||||
@ -96,9 +99,9 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
|||||||
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
|
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
|
||||||
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
|
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
|
||||||
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
|
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
|
||||||
libnm-glib libnm-util gnome-keyring-1
|
libnm-glib libnm-util >= $NETWORKMANAGER_MIN_VERSION
|
||||||
gcr-3 >= $GCR_MIN_VERSION
|
libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
|
||||||
gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION)
|
gnome-keyring-1 gcr-3 >= $GCR_MIN_VERSION)
|
||||||
|
|
||||||
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
||||||
|
|
||||||
@ -120,10 +123,10 @@ CFLAGS=$saved_CFLAGS
|
|||||||
LIBS=$saved_LIBS
|
LIBS=$saved_LIBS
|
||||||
|
|
||||||
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
|
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
|
||||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 x11)
|
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
|
||||||
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
||||||
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
|
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
|
||||||
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.5.4)
|
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.7.2)
|
||||||
|
|
||||||
AC_MSG_CHECKING([for bluetooth support])
|
AC_MSG_CHECKING([for bluetooth support])
|
||||||
PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
|
PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
|
||||||
@ -139,7 +142,7 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
|
|||||||
AC_SUBST([HAVE_BLUETOOTH],[0])
|
AC_SUBST([HAVE_BLUETOOTH],[0])
|
||||||
AC_MSG_RESULT([no])])
|
AC_MSG_RESULT([no])])
|
||||||
|
|
||||||
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-3.0 >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
|
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0)
|
||||||
AC_SUBST(CALENDAR_SERVER_CFLAGS)
|
AC_SUBST(CALENDAR_SERVER_CFLAGS)
|
||||||
AC_SUBST(CALENDAR_SERVER_LIBS)
|
AC_SUBST(CALENDAR_SERVER_LIBS)
|
||||||
|
|
||||||
@ -208,6 +211,18 @@ AC_SUBST(TYPELIBDIR)
|
|||||||
|
|
||||||
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
|
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(man,
|
||||||
|
[AS_HELP_STRING([--enable-man],
|
||||||
|
[generate man pages [default=yes]])],,
|
||||||
|
enable_man=yes)
|
||||||
|
if test "$enable_man" != no; then
|
||||||
|
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
||||||
|
if test -z "$XSLTPROC"; then
|
||||||
|
AC_MSG_ERROR([xsltproc is required for --enable-man])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
|
||||||
|
|
||||||
# Stay command-line compatible with the gnome-common configure option. Here
|
# Stay command-line compatible with the gnome-common configure option. Here
|
||||||
# minimum/yes/maximum are the same, however.
|
# minimum/yes/maximum are the same, however.
|
||||||
AC_ARG_ENABLE(compile_warnings,
|
AC_ARG_ENABLE(compile_warnings,
|
||||||
|
@ -8,5 +8,14 @@
|
|||||||
<KeyListEntry name="toggle-message-tray"
|
<KeyListEntry name="toggle-message-tray"
|
||||||
_description="Show the message tray"/>
|
_description="Show the message tray"/>
|
||||||
|
|
||||||
|
<KeyListEntry name="focus-active-notification"
|
||||||
|
_description="Focus the active notification"/>
|
||||||
|
|
||||||
|
<KeyListEntry name="toggle-application-view"
|
||||||
|
_description="Show all applications"/>
|
||||||
|
|
||||||
|
<KeyListEntry name="open-application-menu"
|
||||||
|
_description="Open the application menu"/>
|
||||||
|
|
||||||
</KeyListEntries>
|
</KeyListEntries>
|
||||||
|
|
||||||
|
@ -57,6 +57,14 @@ value here is from the TpConnectionPresenceType enumeration.</_summary>
|
|||||||
<_summary>Internally used to store the last session presence status for the user. The
|
<_summary>Internally used to store the last session presence status for the user. The
|
||||||
value here is from the GsmPresenceStatus enumeration.</_summary>
|
value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||||
</key>
|
</key>
|
||||||
|
<key name="always-show-log-out" type="b">
|
||||||
|
<default>false</default>
|
||||||
|
<_summary>Always show the 'Log out' menuitem in the user menu.</_summary>
|
||||||
|
<_description>
|
||||||
|
This key overrides the automatic hiding of the 'Log out'
|
||||||
|
menuitem in single-user, single-session situations.
|
||||||
|
</_description>
|
||||||
|
</key>
|
||||||
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
||||||
<child name="recorder" schema="org.gnome.shell.recorder"/>
|
<child name="recorder" schema="org.gnome.shell.recorder"/>
|
||||||
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||||
@ -83,6 +91,14 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
|||||||
Keybinding to open the application menu.
|
Keybinding to open the application menu.
|
||||||
</_description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
|
<key name="toggle-application-view" type="as">
|
||||||
|
<default>["<Super>a"]</default>
|
||||||
|
<_summary>Keybinding to open the "Show Applications" view</_summary>
|
||||||
|
<_description>
|
||||||
|
Keybinding to open the "Show Applications" view of the Activities
|
||||||
|
Overview.
|
||||||
|
</_description>
|
||||||
|
</key>
|
||||||
<key name="toggle-message-tray" type="as">
|
<key name="toggle-message-tray" type="as">
|
||||||
<default>["<Super>m"]</default>
|
<default>["<Super>m"]</default>
|
||||||
<_summary>Keybinding to toggle the visibility of the message tray</_summary>
|
<_summary>Keybinding to toggle the visibility of the message tray</_summary>
|
||||||
@ -90,6 +106,13 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
|||||||
Keybinding to toggle the visibility of the message tray.
|
Keybinding to toggle the visibility of the message tray.
|
||||||
</_description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
|
<key name="focus-active-notification" type="as">
|
||||||
|
<default>["<Super>n"]</default>
|
||||||
|
<_summary>Keybinding to focus the active notification</_summary>
|
||||||
|
<_description>
|
||||||
|
Keybinding to focus the active notification.
|
||||||
|
</_description>
|
||||||
|
</key>
|
||||||
<key name="toggle-recording" type="as">
|
<key name="toggle-recording" type="as">
|
||||||
<default><![CDATA[['<Control><Shift><Alt>r']]]></default>
|
<default><![CDATA[['<Control><Shift><Alt>r']]]></default>
|
||||||
<_summary>Keybinding to toggle the screen recorder</_summary>
|
<_summary>Keybinding to toggle the screen recorder</_summary>
|
||||||
@ -148,44 +171,53 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
|||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/">
|
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
|
||||||
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="attach-modal-dialogs" type="b">
|
<key name="attach-modal-dialogs" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<summary>Attach modal dialog to the parent window</summary>
|
<_summary>Attach modal dialog to the parent window</_summary>
|
||||||
<description>
|
<_description>
|
||||||
This key overrides the key in org.gnome.mutter when running
|
This key overrides the key in org.gnome.mutter when running
|
||||||
GNOME Shell.
|
GNOME Shell.
|
||||||
</description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="button-layout" type="s">
|
<key name="button-layout" type="s">
|
||||||
<default>":close"</default>
|
<default>":close"</default>
|
||||||
<summary>Arrangement of buttons on the titlebar</summary>
|
<_summary>Arrangement of buttons on the titlebar</_summary>
|
||||||
<description>
|
<_description>
|
||||||
This key overrides the key in org.gnome.desktop.wm.preferences when
|
This key overrides the key in org.gnome.desktop.wm.preferences when
|
||||||
running GNOME Shell.
|
running GNOME Shell.
|
||||||
</description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="edge-tiling" type="b">
|
<key name="edge-tiling" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<summary>Enable edge tiling when dropping windows on screen edges</summary>
|
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
|
||||||
<description>
|
<_description>
|
||||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
</description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="dynamic-workspaces" type="b">
|
<key name="dynamic-workspaces" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<summary>Workspaces are managed dynamically</summary>
|
<_summary>Workspaces are managed dynamically</_summary>
|
||||||
<description>
|
<_description>
|
||||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
</description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="workspaces-only-on-primary" type="b">
|
<key name="workspaces-only-on-primary" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<summary>Workspaces only on primary monitor</summary>
|
<_summary>Workspaces only on primary monitor</_summary>
|
||||||
|
<_description>
|
||||||
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
|
</_description>
|
||||||
|
</key>
|
||||||
|
|
||||||
|
<key name="focus-change-on-pointer-rest" type="b">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Delay focus changes in mouse mode until the pointer stops moving</summary>
|
||||||
<description>
|
<description>
|
||||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
</description>
|
</description>
|
||||||
|
@ -39,7 +39,6 @@ stage {
|
|||||||
/* small */
|
/* small */
|
||||||
.app-well-menu,
|
.app-well-menu,
|
||||||
.contact-details-status,
|
.contact-details-status,
|
||||||
.run-dialog-label,
|
|
||||||
.run-dialog-error-label {
|
.run-dialog-error-label {
|
||||||
font-size: 9pt;
|
font-size: 9pt;
|
||||||
}
|
}
|
||||||
@ -311,7 +310,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
.notification-icon-button:focus,
|
.notification-icon-button:focus,
|
||||||
.hotplug-notification-item:focus,
|
.hotplug-notification-item:focus,
|
||||||
.modal-dialog-button:focus {
|
.modal-dialog-button:focus {
|
||||||
border: 2px solid #8b8b8b;
|
border-width: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dash-search-button:active,
|
.dash-search-button:active,
|
||||||
@ -326,26 +325,30 @@ StScrollBar StButton#vhandle:active {
|
|||||||
background-gradient-end: rgba(255, 255, 255, 0.2);
|
background-gradient-end: rgba(255, 255, 255, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.notification-button:insensitive,
|
||||||
.notification-icon-button:insensitive,
|
.notification-icon-button:insensitive,
|
||||||
.notification-button:insensitive {
|
.modal-dialog-button:insensitive {
|
||||||
|
border-color: #666666;
|
||||||
color: #9f9f9f;
|
color: #9f9f9f;
|
||||||
|
background-gradient-direction: none;
|
||||||
|
background-color: rgba(102, 102, 102, 0.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Entries */
|
/* Entries */
|
||||||
|
|
||||||
#searchEntry,
|
#searchEntry,
|
||||||
.notification StEntry,
|
.notification StEntry,
|
||||||
.login-dialog-prompt-entry,
|
.modal-dialog StEntry {
|
||||||
.prompt-dialog-password-entry {
|
|
||||||
color: rgb(64, 64, 64);
|
color: rgb(64, 64, 64);
|
||||||
caret-color: rgb(64, 64, 64);
|
caret-color: rgb(64, 64, 64);
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
caret-size: 1px;
|
caret-size: 1px;
|
||||||
selected-color: black;
|
selected-color: white;
|
||||||
padding: 4px 12px;
|
padding: 4px 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchEntry,
|
#searchEntry,
|
||||||
|
.run-dialog-entry,
|
||||||
.notification StEntry {
|
.notification StEntry {
|
||||||
border: 2px solid rgba(245,245,245,0.2);
|
border: 2px solid rgba(245,245,245,0.2);
|
||||||
background-gradient-start: rgba(5,5,6,0.1);
|
background-gradient-start: rgba(5,5,6,0.1);
|
||||||
@ -358,8 +361,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
#searchEntry:focus,
|
#searchEntry:focus,
|
||||||
#searchEntry:hover,
|
#searchEntry:hover,
|
||||||
.notification StEntry:focus,
|
.notification StEntry:focus,
|
||||||
.login-dialog-prompt-entry,
|
.modal-dialog StEntry {
|
||||||
.prompt-dialog-password-entry {
|
|
||||||
border: 2px solid rgb(136,138,133);
|
border: 2px solid rgb(136,138,133);
|
||||||
background-gradient-start: rgb(200,200,200);
|
background-gradient-start: rgb(200,200,200);
|
||||||
background-gradient-end: white;
|
background-gradient-end: white;
|
||||||
@ -368,12 +370,17 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.notification StEntry:focus,
|
.notification StEntry:focus,
|
||||||
.prompt-dialog-password-entry:focus,
|
.modal-dialog StEntry:focus {
|
||||||
.login-dialog-prompt-entry:focus {
|
|
||||||
border: 2px solid #3465a4;
|
border: 2px solid #3465a4;
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchEntry {
|
#searchEntry {
|
||||||
|
border-color: rgba(245,245,245,0.3);
|
||||||
|
color: rgb(192, 192, 192);
|
||||||
|
caret-color: rgb(192, 192, 192);
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchEntry:hover {
|
||||||
color: rgb(128, 128, 128);
|
color: rgb(128, 128, 128);
|
||||||
caret-color: rgb(128, 128, 128);
|
caret-color: rgb(128, 128, 128);
|
||||||
}
|
}
|
||||||
@ -386,8 +393,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.notification StEntry,
|
.notification StEntry,
|
||||||
.prompt-dialog-password-entry,
|
.modal-dialog StEntry {
|
||||||
.login-dialog-prompt-entry {
|
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
padding: 4px 4px;
|
padding: 4px 4px;
|
||||||
}
|
}
|
||||||
@ -402,6 +408,8 @@ StScrollBar StButton#vhandle:active {
|
|||||||
.login-dialog-prompt-entry:insensitive {
|
.login-dialog-prompt-entry:insensitive {
|
||||||
color: rgba(0,0,0,0.7);
|
color: rgba(0,0,0,0.7);
|
||||||
border: 2px solid #565656;
|
border: 2px solid #565656;
|
||||||
|
background-gradient-start: rgb(200,200,200);
|
||||||
|
background-gradient-end: rgb(210,210,210);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Panel */
|
/* Panel */
|
||||||
@ -549,7 +557,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.status-chooser-combo.popup-combo-menu {
|
.status-chooser-combo.popup-combo-menu {
|
||||||
background-color: rgba(0,0,0,0.7);
|
|
||||||
padding: .4em 0em;
|
padding: .4em 0em;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid #5f5f5f;
|
border: 1px solid #5f5f5f;
|
||||||
@ -567,7 +574,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
/* Overview */
|
/* Overview */
|
||||||
|
|
||||||
#overview {
|
#overview {
|
||||||
spacing: 12px;
|
spacing: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-caption {
|
.window-caption {
|
||||||
@ -612,9 +619,9 @@ StScrollBar StButton#vhandle:active {
|
|||||||
|
|
||||||
.window-close, .notification-close {
|
.window-close, .notification-close {
|
||||||
background-image: url("close-window.svg");
|
background-image: url("close-window.svg");
|
||||||
background-size: 34px;
|
background-size: 32px;
|
||||||
height: 34px;
|
height: 32px;
|
||||||
width: 34px;
|
width: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-close {
|
.window-close {
|
||||||
@ -625,19 +632,31 @@ StScrollBar StButton#vhandle:active {
|
|||||||
/* we start out in the top right of the
|
/* we start out in the top right of the
|
||||||
* notification, inset.
|
* notification, inset.
|
||||||
*
|
*
|
||||||
* center is 32px/2 = 17px
|
* center is 32px/2 = 16px
|
||||||
*
|
*
|
||||||
* adjust left 2px
|
* adjust left 2px
|
||||||
* adjust down 8px */
|
* adjust down 8px */
|
||||||
|
|
||||||
-shell-close-overlap-x: 15px;
|
-shell-close-overlap-x: 14px;
|
||||||
-shell-close-overlap-y: 12px;
|
-shell-close-overlap-y: -12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-close:rtl {
|
||||||
|
/* as above, but starting out in the top left of the
|
||||||
|
* notification. */
|
||||||
|
|
||||||
|
-shell-close-overlap-x: -14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-close:rtl {
|
.window-close:rtl {
|
||||||
-st-background-image-shadow: 2px 2px 6px rgba(0,0,0,0.5);
|
-st-background-image-shadow: 2px 2px 6px rgba(0,0,0,0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.window-picker {
|
||||||
|
-horizontal-spacing: 40px;
|
||||||
|
-vertical-spacing: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Dash */
|
/* Dash */
|
||||||
|
|
||||||
#dash {
|
#dash {
|
||||||
@ -656,11 +675,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
border-radius: 9px 0px 0px 9px;
|
border-radius: 9px 0px 0px 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#dash:empty {
|
|
||||||
height: 100px;
|
|
||||||
width: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.placeholder {
|
.placeholder {
|
||||||
background-image: url("dash-placeholder.svg");
|
background-image: url("dash-placeholder.svg");
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
@ -680,6 +694,11 @@ StScrollBar StButton#vhandle:active {
|
|||||||
|
|
||||||
.search-entry-icon {
|
.search-entry-icon {
|
||||||
icon-size: 1em;
|
icon-size: 1em;
|
||||||
|
color: #c0c0c0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchEntry:hover .search-entry-icon,
|
||||||
|
#searchEntry:focus .search-entry-icon {
|
||||||
color: #8d8f8a;
|
color: #8d8f8a;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1191,12 +1210,16 @@ StScrollBar StButton#vhandle:active {
|
|||||||
background: #2e3436 url(message-tray-background.png);
|
background: #2e3436 url(message-tray-background.png);
|
||||||
background-repeat: repeat;
|
background-repeat: repeat;
|
||||||
transition-duration: 250;
|
transition-duration: 250;
|
||||||
height: 72px;
|
}
|
||||||
|
|
||||||
|
#message-tray:keyboard {
|
||||||
|
/* Same as the OSK */
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
#message-tray:overview {
|
#message-tray:overview {
|
||||||
background: rgba(0, 0, 0, 0.1);
|
background: rgba(0, 0, 0, 0.1);
|
||||||
border-top: 1px solid rgba(128, 128, 128, 0.3);
|
outline: 1px solid rgba(128, 128, 128, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification {
|
.notification {
|
||||||
@ -1409,6 +1432,10 @@ StScrollBar StButton#vhandle:active {
|
|||||||
padding-right: 4px;
|
padding-right: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chat-notification-scrollview{
|
||||||
|
max-height: 22em;
|
||||||
|
}
|
||||||
|
|
||||||
.subscription-message {
|
.subscription-message {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
@ -1418,28 +1445,34 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#summary-mode {
|
#summary-mode {
|
||||||
padding: 0px 6px 0px 6px; /* same as the values in .summary-source */
|
height: 72px;
|
||||||
height: 60px;
|
|
||||||
spacing: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-source-button {
|
.summary-source-button {
|
||||||
border-radius: 4px;
|
padding: 6px 3px 6px 3px;
|
||||||
transition-duration: 100;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-source-button:hover {
|
.summary-source-button:last-child:ltr {
|
||||||
|
padding-right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary-source-button:last-child:rtl {
|
||||||
|
padding-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary-source-button:hover .summary-source {
|
||||||
background-color: rgba(255,255,255,0.1);
|
background-color: rgba(255,255,255,0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-source-button:focus,
|
.summary-source-button:focus .summary-source,
|
||||||
.summary-source-button:selected {
|
.summary-source-button:selected .summary-source {
|
||||||
background-color: rgba(255,255,255,0.33);
|
background-color: rgba(255,255,255,0.33);
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-source {
|
.summary-source {
|
||||||
padding-right: 6px;
|
border-radius: 4px;
|
||||||
padding-left: 6px;
|
padding: 0 6px 0 6px;
|
||||||
|
transition-duration: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-source-counter {
|
.summary-source-counter {
|
||||||
@ -1617,35 +1650,26 @@ StScrollBar StButton#vhandle:active {
|
|||||||
padding: 4px 32px 5px;
|
padding: 4px 32px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-dialog-button:insensitive {
|
|
||||||
color: rgb(60, 60, 60);
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-dialog-button:focus {
|
.modal-dialog-button:focus {
|
||||||
padding: 3px 31px 4px;
|
padding: 3px 31px 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run Dialog */
|
/* Run Dialog */
|
||||||
|
|
||||||
|
.run-dialog-label {
|
||||||
|
font-size: 12pt;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #999999;
|
||||||
|
padding-bottom: .4em;
|
||||||
|
}
|
||||||
|
|
||||||
.run-dialog-error-box {
|
.run-dialog-error-box {
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
spacing: 5px;
|
spacing: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.run-dialog-entry {
|
.modal-dialog .run-dialog-entry {
|
||||||
font-weight: bold;
|
width: 20em;
|
||||||
width: 23em;
|
|
||||||
selection-background-color: white;
|
|
||||||
selected-color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.run-dialog {
|
|
||||||
border-radius: 16px;
|
|
||||||
|
|
||||||
padding-right: 21px;
|
|
||||||
padding-left: 21px;
|
|
||||||
padding-bottom: 15px;
|
|
||||||
padding-top: 15px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.lightbox {
|
.lightbox {
|
||||||
@ -2026,7 +2050,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.login-dialog-user-list-item {
|
.login-dialog-user-list-item {
|
||||||
color: #666666;
|
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: .2em;
|
padding: .2em;
|
||||||
}
|
}
|
||||||
@ -2044,6 +2067,11 @@ StScrollBar StButton#vhandle:active {
|
|||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-dialog-user-list:expanded .login-dialog-user-list-item {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog-user-list-item,
|
||||||
.login-dialog-user-list-item:hover .login-dialog-user-list-item-name,
|
.login-dialog-user-list-item:hover .login-dialog-user-list-item-name,
|
||||||
.login-dialog-user-list:expanded .login-dialog-user-list-item:focus .login-dialog-user-list-item-name,
|
.login-dialog-user-list:expanded .login-dialog-user-list-item:focus .login-dialog-user-list-item-name,
|
||||||
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
|
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
|
||||||
@ -2091,6 +2119,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
padding-top: 1em;
|
padding-top: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-dialog-not-listed-button:focus .login-dialog-not-listed-label,
|
||||||
.login-dialog-not-listed-button:hover .login-dialog-not-listed-label {
|
.login-dialog-not-listed-button:hover .login-dialog-not-listed-label {
|
||||||
color: #E8E8E8;
|
color: #E8E8E8;
|
||||||
}
|
}
|
||||||
@ -2100,7 +2129,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
text-shadow: black 4px 4px 3px 0px;
|
text-shadow: black 0px 4px 3px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-dialog-prompt-layout {
|
.login-dialog-prompt-layout {
|
||||||
@ -2166,18 +2195,24 @@ StScrollBar StButton#vhandle:active {
|
|||||||
height: .75em;
|
height: .75em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.login-dialog .modal-dialog-button {
|
.login-dialog .modal-dialog-button {
|
||||||
border: 1px solid #666666;
|
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
padding: 3px 18px;
|
padding: 3px 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-dialog .modal-dialog-button:focus {
|
||||||
|
padding: 2px 17px;
|
||||||
|
}
|
||||||
|
|
||||||
.login-dialog .modal-dialog-button:default {
|
.login-dialog .modal-dialog-button:default {
|
||||||
background-gradient-start: #6793c4;
|
background-gradient-start: #6793c4;
|
||||||
background-gradient-end: #335d8f;
|
background-gradient-end: #335d8f;
|
||||||
background-gradient-direction: vertical;
|
background-gradient-direction: vertical;
|
||||||
border: 2px solid #16335d;
|
border-color: #16335d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog .modal-dialog-button:default:focus {
|
||||||
|
border: 2px solid #377fe7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-dialog .modal-dialog-button:default:hover {
|
.login-dialog .modal-dialog-button:default:hover {
|
||||||
@ -2191,6 +2226,13 @@ StScrollBar StButton#vhandle:active {
|
|||||||
background-gradient-end: #74a0d0;
|
background-gradient-end: #74a0d0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-dialog .modal-dialog-button:default:insensitive {
|
||||||
|
border-color: #666666;
|
||||||
|
color: #9f9f9f;
|
||||||
|
background-gradient-direction: none;
|
||||||
|
background-color: rgba(102, 102, 102, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
.login-dialog-message-warning {
|
.login-dialog-message-warning {
|
||||||
color: orange;
|
color: orange;
|
||||||
}
|
}
|
||||||
@ -2223,6 +2265,10 @@ StScrollBar StButton#vhandle:active {
|
|||||||
-arrow-shadow: 0 1px 1px rgba(0,0,0,0.4);
|
-arrow-shadow: 0 1px 1px rgba(0,0,0,0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.screen-shield-contents-box {
|
||||||
|
spacing: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
.screen-shield-clock {
|
.screen-shield-clock {
|
||||||
color: white;
|
color: white;
|
||||||
text-shadow: 0px 1px 2px rgba(0,0,0,0.6);
|
text-shadow: 0px 1px 2px rgba(0,0,0,0.6);
|
||||||
@ -2232,12 +2278,12 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.screen-shield-clock-time {
|
.screen-shield-clock-time {
|
||||||
font-size: 86px;
|
font-size: 72pt;
|
||||||
text-shadow: 0px 2px 2px rgba(0,0,0,0.4);
|
text-shadow: 0px 2px 2px rgba(0,0,0,0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
.screen-shield-clock-date {
|
.screen-shield-clock-date {
|
||||||
font-size: 48px;
|
font-size: 28pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
#screenShieldNotifications {
|
#screenShieldNotifications {
|
||||||
@ -2245,11 +2291,12 @@ StScrollBar StButton#vhandle:active {
|
|||||||
background-color: rgba(0.0, 0.0, 0.0, 0.9);
|
background-color: rgba(0.0, 0.0, 0.0, 0.9);
|
||||||
border: 2px solid #868686;
|
border: 2px solid #868686;
|
||||||
max-height: 500px;
|
max-height: 500px;
|
||||||
padding: 12px 0;
|
padding: 18px 0;
|
||||||
|
box-shadow: .5em .5em 20px rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.screen-shield-notifications-box {
|
.screen-shield-notifications-box {
|
||||||
spacing: 12px;
|
spacing: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.screen-shield-notification-source {
|
.screen-shield-notification-source {
|
||||||
@ -2260,6 +2307,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
.screen-shield-notification-label {
|
.screen-shield-notification-label {
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
color: #babdb6;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove background from notifications, otherwise
|
/* Remove background from notifications, otherwise
|
||||||
|
@ -174,7 +174,7 @@ const Application = new Lang.Class({
|
|||||||
let renderer = new Gtk.CellRendererText();
|
let renderer = new Gtk.CellRendererText();
|
||||||
this._extensionSelector.pack_start(renderer, true);
|
this._extensionSelector.pack_start(renderer, true);
|
||||||
this._extensionSelector.add_attribute(renderer, 'text', 1);
|
this._extensionSelector.add_attribute(renderer, 'text', 1);
|
||||||
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive), null);
|
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive));
|
||||||
this._extensionSelector.connect('changed', Lang.bind(this, this._extensionSelected));
|
this._extensionSelector.connect('changed', Lang.bind(this, this._extensionSelected));
|
||||||
|
|
||||||
toolitem = new Gtk.ToolItem({ child: this._extensionSelector });
|
toolitem = new Gtk.ToolItem({ child: this._extensionSelector });
|
||||||
|
@ -25,6 +25,7 @@ const Gio = imports.gi.Gio;
|
|||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Pango = imports.gi.Pango;
|
const Pango = imports.gi.Pango;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
@ -38,13 +39,14 @@ const GdmUtil = imports.gdm.util;
|
|||||||
const Lightbox = imports.ui.lightbox;
|
const Lightbox = imports.ui.lightbox;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const UserMenu = imports.ui.userMenu;
|
const UserMenu = imports.ui.userMenu;
|
||||||
|
|
||||||
const _RESIZE_ANIMATION_TIME = 0.25;
|
const _RESIZE_ANIMATION_TIME = 0.25;
|
||||||
const _SCROLL_ANIMATION_TIME = 0.5;
|
const _SCROLL_ANIMATION_TIME = 0.5;
|
||||||
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
|
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
|
||||||
const _LOGO_ICON_NAME_SIZE = 48;
|
const _LOGO_ICON_HEIGHT = 16;
|
||||||
|
|
||||||
let _loginDialog = null;
|
let _loginDialog = null;
|
||||||
|
|
||||||
@ -81,6 +83,36 @@ function _smoothlyResizeActor(actor, width, height) {
|
|||||||
return hold;
|
return hold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const LogoMenuButton = new Lang.Class({
|
||||||
|
Name: 'LogoMenuButton',
|
||||||
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.parent(0.0, null, true);
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
||||||
|
this._settings.connect('changed::' + GdmUtil.LOGO_KEY,
|
||||||
|
Lang.bind(this, this._updateLogo));
|
||||||
|
|
||||||
|
this._iconBin = new St.Bin();
|
||||||
|
this.actor.add_actor(this._iconBin);
|
||||||
|
|
||||||
|
this._updateLogo();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateLogo: function() {
|
||||||
|
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
|
||||||
|
let icon = null;
|
||||||
|
|
||||||
|
if (path) {
|
||||||
|
let file = Gio.file_new_for_path(path);
|
||||||
|
let cache = St.TextureCache.get_default();
|
||||||
|
icon = cache.load_uri_async(file.get_uri(), -1, _LOGO_ICON_HEIGHT);
|
||||||
|
}
|
||||||
|
this._iconBin.set_child(icon);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const UserListItem = new Lang.Class({
|
const UserListItem = new Lang.Class({
|
||||||
Name: 'UserListItem',
|
Name: 'UserListItem',
|
||||||
|
|
||||||
@ -105,6 +137,7 @@ const UserListItem = new Lang.Class({
|
|||||||
layout.add(textLayout, { expand: true });
|
layout.add(textLayout, { expand: true });
|
||||||
|
|
||||||
this._nameLabel = new St.Label({ style_class: 'login-dialog-user-list-item-name' });
|
this._nameLabel = new St.Label({ style_class: 'login-dialog-user-list-item-name' });
|
||||||
|
this.actor.label_actor = this._nameLabel;
|
||||||
textLayout.add(this._nameLabel,
|
textLayout.add(this._nameLabel,
|
||||||
{ y_fill: false,
|
{ y_fill: false,
|
||||||
y_align: St.Align.MIDDLE,
|
y_align: St.Align.MIDDLE,
|
||||||
@ -148,14 +181,6 @@ const UserListItem = new Lang.Class({
|
|||||||
this.emit('activate');
|
this.emit('activate');
|
||||||
},
|
},
|
||||||
|
|
||||||
fadeOutName: function() {
|
|
||||||
return GdmUtil.fadeOutActor(this._nameLabel);
|
|
||||||
},
|
|
||||||
|
|
||||||
fadeInName: function() {
|
|
||||||
return GdmUtil.fadeInActor(this._nameLabel);
|
|
||||||
},
|
|
||||||
|
|
||||||
showTimedLoginIndicator: function(time) {
|
showTimedLoginIndicator: function(time) {
|
||||||
let hold = new Batch.Hold();
|
let hold = new Batch.Hold();
|
||||||
|
|
||||||
@ -206,16 +231,18 @@ const UserList = new Lang.Class({
|
|||||||
if (global.stage.get_key_focus() != this.actor)
|
if (global.stage.get_key_focus() != this.actor)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
let focusSet = this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
|
if (!focusSet) {
|
||||||
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
|
||||||
|
this._moveFocusToItems();
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_showItem: function(item) {
|
_showItem: function(item) {
|
||||||
let tasks = [function() {
|
let tasks = [function() {
|
||||||
return GdmUtil.fadeInActor(item.actor);
|
return GdmUtil.fadeInActor(item.actor);
|
||||||
},
|
|
||||||
|
|
||||||
function() {
|
|
||||||
return item.fadeInName();
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||||
@ -279,13 +306,16 @@ const UserList = new Lang.Class({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this._box.remove_style_pseudo_class('expanded');
|
|
||||||
let batch = new Batch.ConsecutiveBatch(this,
|
let batch = new Batch.ConsecutiveBatch(this,
|
||||||
[function() {
|
[function() {
|
||||||
return GdmUtil.fadeOutActor(this.actor.vscroll);
|
return GdmUtil.fadeOutActor(this.actor.vscroll);
|
||||||
},
|
},
|
||||||
|
|
||||||
new Batch.ConcurrentBatch(this, tasks)
|
new Batch.ConcurrentBatch(this, tasks),
|
||||||
|
|
||||||
|
function() {
|
||||||
|
this._box.remove_style_pseudo_class('expanded');
|
||||||
|
}
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return batch.run();
|
return batch.run();
|
||||||
@ -335,7 +365,6 @@ const UserList = new Lang.Class({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this._box.add_style_pseudo_class('expanded');
|
|
||||||
let batch = new Batch.ConsecutiveBatch(this,
|
let batch = new Batch.ConsecutiveBatch(this,
|
||||||
[function() {
|
[function() {
|
||||||
this.takeOverWhitespace();
|
this.takeOverWhitespace();
|
||||||
@ -346,6 +375,10 @@ const UserList = new Lang.Class({
|
|||||||
return _smoothlyResizeActor(this._box, -1, fullHeight);
|
return _smoothlyResizeActor(this._box, -1, fullHeight);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
function() {
|
||||||
|
this._box.add_style_pseudo_class('expanded');
|
||||||
|
},
|
||||||
|
|
||||||
new Batch.ConcurrentBatch(this, tasks),
|
new Batch.ConcurrentBatch(this, tasks),
|
||||||
|
|
||||||
function() {
|
function() {
|
||||||
@ -471,6 +504,7 @@ const SessionListItem = new Lang.Class({
|
|||||||
|
|
||||||
let label = new St.Label({ style_class: 'login-dialog-session-list-item-label',
|
let label = new St.Label({ style_class: 'login-dialog-session-list-item-label',
|
||||||
text: name });
|
text: name });
|
||||||
|
this.actor.label_actor = label;
|
||||||
|
|
||||||
this._box.add_actor(label);
|
this._box.add_actor(label);
|
||||||
},
|
},
|
||||||
@ -626,6 +660,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
this.parent({ shellReactive: true,
|
this.parent({ shellReactive: true,
|
||||||
styleClass: 'login-dialog',
|
styleClass: 'login-dialog',
|
||||||
parentActor: parentActor,
|
parentActor: parentActor,
|
||||||
|
keybindingMode: Main.KeybindingMode.LOGIN_SCREEN,
|
||||||
shouldFadeIn: false });
|
shouldFadeIn: false });
|
||||||
this.connect('destroy',
|
this.connect('destroy',
|
||||||
Lang.bind(this, this._onDestroy));
|
Lang.bind(this, this._onDestroy));
|
||||||
@ -635,35 +670,34 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._userManager = AccountsService.UserManager.get_default()
|
this._userManager = AccountsService.UserManager.get_default()
|
||||||
this._greeterClient = new Gdm.Client();
|
this._greeterClient = new Gdm.Client();
|
||||||
|
|
||||||
this._greeter = this._greeterClient.get_greeter_sync(null);
|
if (GLib.getenv('GDM_GREETER_TEST') != '1') {
|
||||||
|
this._greeter = this._greeterClient.get_greeter_sync(null);
|
||||||
|
|
||||||
this._greeter.connect('default-session-name-changed',
|
this._greeter.connect('default-session-name-changed',
|
||||||
Lang.bind(this, this._onDefaultSessionChanged));
|
Lang.bind(this, this._onDefaultSessionChanged));
|
||||||
|
|
||||||
this._greeter.connect('session-opened',
|
this._greeter.connect('session-opened',
|
||||||
Lang.bind(this, this._onSessionOpened));
|
Lang.bind(this, this._onSessionOpened));
|
||||||
this._greeter.connect('timed-login-requested',
|
this._greeter.connect('timed-login-requested',
|
||||||
Lang.bind(this, this._onTimedLoginRequested));
|
Lang.bind(this, this._onTimedLoginRequested));
|
||||||
|
}
|
||||||
|
|
||||||
this._userVerifier = new GdmUtil.ShellUserVerifier(this._greeterClient);
|
this._userVerifier = new GdmUtil.ShellUserVerifier(this._greeterClient);
|
||||||
this._userVerifier.connect('ask-question', Lang.bind(this, this._askQuestion));
|
this._userVerifier.connect('ask-question', Lang.bind(this, this._askQuestion));
|
||||||
this._userVerifier.connect('show-message', Lang.bind(this, this._showMessage));
|
this._userVerifier.connect('show-message', Lang.bind(this, this._showMessage));
|
||||||
this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
|
this._userVerifier.connect('reset', Lang.bind(this, this._reset));
|
||||||
this._userVerifier.connect('show-login-hint', Lang.bind(this, this._showLoginHint));
|
this._userVerifier.connect('show-login-hint', Lang.bind(this, this._showLoginHint));
|
||||||
this._userVerifier.connect('hide-login-hint', Lang.bind(this, this._hideLoginHint));
|
this._userVerifier.connect('hide-login-hint', Lang.bind(this, this._hideLoginHint));
|
||||||
|
this._verifyingUser = false;
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
||||||
|
|
||||||
this._settings.connect('changed::' + GdmUtil.LOGO_KEY,
|
|
||||||
Lang.bind(this, this._updateLogo));
|
|
||||||
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY,
|
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY,
|
||||||
Lang.bind(this, this._updateBanner));
|
Lang.bind(this, this._updateBanner));
|
||||||
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_TEXT_KEY,
|
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_TEXT_KEY,
|
||||||
Lang.bind(this, this._updateBanner));
|
Lang.bind(this, this._updateBanner));
|
||||||
|
this._settings.connect('changed::' + GdmUtil.DISABLE_USER_LIST_KEY,
|
||||||
this._logoBox = new St.Bin({ style_class: 'login-dialog-logo-box' });
|
Lang.bind(this, this._updateDisableUserList));
|
||||||
this.contentLayout.add(this._logoBox);
|
|
||||||
this._updateLogo();
|
|
||||||
|
|
||||||
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
|
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
|
||||||
text: '' });
|
text: '' });
|
||||||
@ -671,37 +705,30 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._updateBanner();
|
this._updateBanner();
|
||||||
|
|
||||||
this._titleLabel = new St.Label({ style_class: 'login-dialog-title',
|
this._titleLabel = new St.Label({ style_class: 'login-dialog-title',
|
||||||
text: C_("title", "Sign In") });
|
text: C_("title", "Sign In"),
|
||||||
|
visible: false });
|
||||||
|
|
||||||
this.contentLayout.add(this._titleLabel,
|
this.contentLayout.add(this._titleLabel,
|
||||||
{ y_fill: false,
|
{ y_fill: false,
|
||||||
y_align: St.Align.START });
|
y_align: St.Align.START });
|
||||||
|
|
||||||
let mainContentBox = new St.BoxLayout({ vertical: false });
|
this._userList = new UserList();
|
||||||
this.contentLayout.add(mainContentBox,
|
this.contentLayout.add(this._userList.actor,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
x_fill: true,
|
x_fill: true,
|
||||||
y_fill: false });
|
y_fill: true });
|
||||||
|
|
||||||
this._userList = new UserList();
|
|
||||||
mainContentBox.add(this._userList.actor,
|
|
||||||
{ expand: true,
|
|
||||||
x_fill: true,
|
|
||||||
y_fill: true });
|
|
||||||
|
|
||||||
this.setInitialKeyFocus(this._userList.actor);
|
this.setInitialKeyFocus(this._userList.actor);
|
||||||
|
|
||||||
this._promptBox = new St.BoxLayout({ style_class: 'login-dialog-prompt-layout',
|
this._promptBox = new St.BoxLayout({ style_class: 'login-dialog-prompt-layout',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
mainContentBox.add(this._promptBox,
|
this.contentLayout.add(this._promptBox,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
x_fill: true,
|
x_fill: true,
|
||||||
y_fill: true,
|
y_fill: true,
|
||||||
x_align: St.Align.START });
|
x_align: St.Align.START });
|
||||||
this._promptLabel = new St.Label({ style_class: 'login-dialog-prompt-label' });
|
this._promptLabel = new St.Label({ style_class: 'login-dialog-prompt-label' });
|
||||||
|
|
||||||
this._mainContentBox = mainContentBox;
|
|
||||||
|
|
||||||
this._promptBox.add(this._promptLabel,
|
this._promptBox.add(this._promptLabel,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
x_fill: true,
|
x_fill: true,
|
||||||
@ -709,6 +736,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
x_align: St.Align.START });
|
x_align: St.Align.START });
|
||||||
this._promptEntry = new St.Entry({ style_class: 'login-dialog-prompt-entry',
|
this._promptEntry = new St.Entry({ style_class: 'login-dialog-prompt-entry',
|
||||||
can_focus: true });
|
can_focus: true });
|
||||||
|
this._promptEntryTextChangedId = 0;
|
||||||
this._promptBox.add(this._promptEntry,
|
this._promptBox.add(this._promptEntry,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
x_fill: true,
|
x_fill: true,
|
||||||
@ -747,7 +775,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
x_align: St.Align.START,
|
x_align: St.Align.START,
|
||||||
x_fill: true });
|
x_fill: true });
|
||||||
|
|
||||||
this._notListedButton.connect('clicked', Lang.bind(this, this._onNotListedClicked));
|
this._notListedButton.connect('clicked', Lang.bind(this, this._hideUserListAndLogIn));
|
||||||
|
|
||||||
this.contentLayout.add(this._notListedButton,
|
this.contentLayout.add(this._notListedButton,
|
||||||
{ expand: false,
|
{ expand: false,
|
||||||
@ -773,18 +801,19 @@ const LoginDialog = new Lang.Class({
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateLogo: function() {
|
_updateDisableUserList: function() {
|
||||||
this._logoBox.child = null;
|
let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY);
|
||||||
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
|
|
||||||
|
|
||||||
if (path) {
|
// If this is the first time around, set initial focus
|
||||||
let file = Gio.file_new_for_path(path);
|
if (this._disableUserList == undefined && disableUserList)
|
||||||
let uri = file.get_uri();
|
this.setInitialKeyFocus(this._promptEntry);
|
||||||
|
|
||||||
let textureCache = St.TextureCache.get_default();
|
if (disableUserList != this._disableUserList) {
|
||||||
this._logoBox.child = textureCache.load_uri_async(uri, -1, _LOGO_ICON_NAME_SIZE);
|
this._disableUserList = disableUserList;
|
||||||
|
|
||||||
|
if (!this._verifyingUser)
|
||||||
|
this._reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateBanner: function() {
|
_updateBanner: function() {
|
||||||
@ -799,32 +828,15 @@ const LoginDialog = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_onReset: function(client, serviceName) {
|
_reset: function() {
|
||||||
this._promptMessage.hide();
|
this._promptMessage.hide();
|
||||||
|
|
||||||
let tasks = [this._hidePrompt,
|
|
||||||
|
|
||||||
new Batch.ConcurrentBatch(this, [this._fadeInTitleLabel,
|
|
||||||
this._fadeInNotListedButton,
|
|
||||||
this._fadeInLogo]),
|
|
||||||
|
|
||||||
function() {
|
|
||||||
this._sessionList.close();
|
|
||||||
this._promptLoginHint.hide();
|
|
||||||
this._userList.actor.show();
|
|
||||||
this._userList.actor.opacity = 255;
|
|
||||||
return this._userList.showItems();
|
|
||||||
},
|
|
||||||
|
|
||||||
function() {
|
|
||||||
this._userList.actor.reactive = true;
|
|
||||||
this._userList.actor.grab_key_focus();
|
|
||||||
}];
|
|
||||||
|
|
||||||
this._user = null;
|
this._user = null;
|
||||||
|
this._verifyingUser = false;
|
||||||
|
|
||||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
if (this._disableUserList)
|
||||||
batch.run();
|
this._hideUserListAndLogIn();
|
||||||
|
else
|
||||||
|
this._showUserList();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDefaultSessionChanged: function(client, sessionId) {
|
_onDefaultSessionChanged: function(client, sessionId) {
|
||||||
@ -832,9 +844,13 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_showMessage: function(userVerifier, message, styleClass) {
|
_showMessage: function(userVerifier, message, styleClass) {
|
||||||
this._promptMessage.text = message;
|
if (message) {
|
||||||
this._promptMessage.styleClass = styleClass;
|
this._promptMessage.text = message;
|
||||||
GdmUtil.fadeInActor(this._promptMessage);
|
this._promptMessage.styleClass = styleClass;
|
||||||
|
GdmUtil.fadeInActor(this._promptMessage);
|
||||||
|
} else {
|
||||||
|
GdmUtil.fadeOutActor(this._promptMessage);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_showLoginHint: function(verifier, message) {
|
_showLoginHint: function(verifier, message) {
|
||||||
@ -875,6 +891,9 @@ const LoginDialog = new Lang.Class({
|
|||||||
if (this._user && this._user.is_logged_in())
|
if (this._user && this._user.is_logged_in())
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
if (!this._verifyingUser)
|
||||||
|
return null;
|
||||||
|
|
||||||
return GdmUtil.fadeInActor(this._sessionList.actor);
|
return GdmUtil.fadeInActor(this._sessionList.actor);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -887,26 +906,21 @@ const LoginDialog = new Lang.Class({
|
|||||||
return batch.run();
|
return batch.run();
|
||||||
},
|
},
|
||||||
|
|
||||||
_showPrompt: function() {
|
_showPrompt: function(forSecret) {
|
||||||
let hold = new Batch.Hold();
|
let hold = new Batch.Hold();
|
||||||
|
|
||||||
let buttons = [{ action: Lang.bind(this, this.cancel),
|
let cancelButtonInfo = { action: Lang.bind(this, this.cancel),
|
||||||
label: _("Cancel"),
|
label: _("Cancel"),
|
||||||
key: Clutter.Escape },
|
key: Clutter.Escape };
|
||||||
{ action: Lang.bind(this, function() {
|
let okButtonInfo = { action: Lang.bind(this, function() {
|
||||||
hold.release();
|
hold.release();
|
||||||
}),
|
}),
|
||||||
label: C_("button", "Sign In"),
|
label: forSecret ? C_("button", "Sign In") : _("Next"),
|
||||||
default: true }];
|
default: true };
|
||||||
|
let buttons = [];
|
||||||
this._promptEntryActivateCallbackId = this._promptEntry.clutter_text.connect('activate',
|
if (!this._disableUserList || this._verifyingUser)
|
||||||
Lang.bind(this, function() {
|
buttons.push(cancelButtonInfo);
|
||||||
hold.release();
|
buttons.push(okButtonInfo);
|
||||||
}));
|
|
||||||
hold.connect('release', Lang.bind(this, function() {
|
|
||||||
this._promptEntry.clutter_text.disconnect(this._promptEntryActivateCallbackId);
|
|
||||||
this._promptEntryActivateCallbackId = null;
|
|
||||||
}));
|
|
||||||
|
|
||||||
let tasks = [function() {
|
let tasks = [function() {
|
||||||
return this._fadeInPrompt();
|
return this._fadeInPrompt();
|
||||||
@ -914,6 +928,16 @@ const LoginDialog = new Lang.Class({
|
|||||||
|
|
||||||
function() {
|
function() {
|
||||||
this.setButtons(buttons);
|
this.setButtons(buttons);
|
||||||
|
|
||||||
|
let updateOkButtonEnabled = Lang.bind(this, function() {
|
||||||
|
let sensitive = this._promptEntry.text.length > 0;
|
||||||
|
okButtonInfo.button.reactive = sensitive;
|
||||||
|
okButtonInfo.button.can_focus = sensitive;
|
||||||
|
});
|
||||||
|
|
||||||
|
updateOkButtonEnabled();
|
||||||
|
|
||||||
|
this._promptEntryTextChangedId = this._promptEntry.clutter_text.connect('text-changed', updateOkButtonEnabled);
|
||||||
},
|
},
|
||||||
|
|
||||||
hold];
|
hold];
|
||||||
@ -924,13 +948,13 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_hidePrompt: function() {
|
_hidePrompt: function() {
|
||||||
if (this._promptEntryActivateCallbackId) {
|
|
||||||
this._promptEntry.clutter_text.disconnect(this._promptEntryActivateCallbackId);
|
|
||||||
this._promptEntryActivateCallbackId = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setButtons([]);
|
this.setButtons([]);
|
||||||
|
|
||||||
|
if (this._promptEntryTextChangedId > 0) {
|
||||||
|
this._promptEntry.clutter_text.disconnect(this._promptEntryTextChangedId);
|
||||||
|
this._promptEntryTextChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
let tasks = [function() {
|
let tasks = [function() {
|
||||||
return GdmUtil.fadeOutActor(this._promptBox);
|
return GdmUtil.fadeOutActor(this._promptBox);
|
||||||
},
|
},
|
||||||
@ -952,7 +976,9 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._promptEntry.set_text('');
|
this._promptEntry.set_text('');
|
||||||
this._promptEntry.clutter_text.set_password_char(passwordChar);
|
this._promptEntry.clutter_text.set_password_char(passwordChar);
|
||||||
|
|
||||||
let tasks = [this._showPrompt,
|
let tasks = [function() {
|
||||||
|
return this._showPrompt(!!passwordChar);
|
||||||
|
},
|
||||||
|
|
||||||
function() {
|
function() {
|
||||||
let _text = this._promptEntry.get_text();
|
let _text = this._promptEntry.get_text();
|
||||||
@ -964,6 +990,23 @@ const LoginDialog = new Lang.Class({
|
|||||||
return batch.run();
|
return batch.run();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_askForUsernameAndLogIn: function() {
|
||||||
|
this._promptLabel.set_text(_("Username: "));
|
||||||
|
this._promptEntry.set_text('');
|
||||||
|
this._promptEntry.clutter_text.set_password_char('');
|
||||||
|
|
||||||
|
let tasks = [this._showPrompt,
|
||||||
|
|
||||||
|
function() {
|
||||||
|
let userName = this._promptEntry.get_text();
|
||||||
|
this._promptEntry.reactive = false;
|
||||||
|
return this._beginVerificationForUser(userName);
|
||||||
|
}];
|
||||||
|
|
||||||
|
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||||
|
return batch.run();
|
||||||
|
},
|
||||||
|
|
||||||
_onSessionOpened: function(client, serviceName) {
|
_onSessionOpened: function(client, serviceName) {
|
||||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||||
},
|
},
|
||||||
@ -1092,7 +1135,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_onNotListedClicked: function(user) {
|
_hideUserListAndLogIn: function() {
|
||||||
let tasks = [function() {
|
let tasks = [function() {
|
||||||
return this._userList.hideItems();
|
return this._userList.hideItems();
|
||||||
},
|
},
|
||||||
@ -1106,26 +1149,37 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel,
|
new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel,
|
||||||
this._fadeOutNotListedButton,
|
this._fadeOutNotListedButton]),
|
||||||
this._fadeOutLogo]),
|
|
||||||
|
|
||||||
function() {
|
function() {
|
||||||
let hold = new Batch.Hold();
|
return this._askForUsernameAndLogIn();
|
||||||
|
|
||||||
this._userVerifier.begin(null, hold);
|
|
||||||
return hold;
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||||
batch.run();
|
batch.run();
|
||||||
},
|
},
|
||||||
|
|
||||||
_fadeInLogo: function() {
|
_showUserList: function() {
|
||||||
return GdmUtil.fadeInActor(this._logoBox);
|
let tasks = [this._hidePrompt,
|
||||||
},
|
|
||||||
|
|
||||||
_fadeOutLogo: function() {
|
new Batch.ConcurrentBatch(this, [this._fadeInTitleLabel,
|
||||||
return GdmUtil.fadeOutActor(this._logoBox);
|
this._fadeInNotListedButton]),
|
||||||
|
|
||||||
|
function() {
|
||||||
|
this._sessionList.close();
|
||||||
|
this._promptLoginHint.hide();
|
||||||
|
this._userList.actor.show();
|
||||||
|
this._userList.actor.opacity = 255;
|
||||||
|
return this._userList.showItems();
|
||||||
|
},
|
||||||
|
|
||||||
|
function() {
|
||||||
|
this._userList.actor.reactive = true;
|
||||||
|
this._userList.actor.grab_key_focus();
|
||||||
|
}];
|
||||||
|
|
||||||
|
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||||
|
batch.run();
|
||||||
},
|
},
|
||||||
|
|
||||||
_fadeInBanner: function() {
|
_fadeInBanner: function() {
|
||||||
@ -1156,6 +1210,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
let hold = new Batch.Hold();
|
let hold = new Batch.Hold();
|
||||||
|
|
||||||
this._userVerifier.begin(userName, hold);
|
this._userVerifier.begin(userName, hold);
|
||||||
|
this._verifyingUser = true;
|
||||||
return hold;
|
return hold;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1175,13 +1230,8 @@ const LoginDialog = new Lang.Class({
|
|||||||
return this._userList.giveUpWhitespace();
|
return this._userList.giveUpWhitespace();
|
||||||
},
|
},
|
||||||
|
|
||||||
function() {
|
|
||||||
return activatedItem.fadeOutName();
|
|
||||||
},
|
|
||||||
|
|
||||||
new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel,
|
new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel,
|
||||||
this._fadeOutNotListedButton,
|
this._fadeOutNotListedButton]),
|
||||||
this._fadeOutLogo]),
|
|
||||||
|
|
||||||
function() {
|
function() {
|
||||||
return this._userList.shrinkToNaturalHeight();
|
return this._userList.shrinkToNaturalHeight();
|
||||||
@ -1213,6 +1263,8 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._userList.addUser(users[i]);
|
this._userList.addUser(users[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._updateDisableUserList();
|
||||||
|
|
||||||
this._userManager.connect('user-added',
|
this._userManager.connect('user-added',
|
||||||
Lang.bind(this, function(userManager, user) {
|
Lang.bind(this, function(userManager, user) {
|
||||||
this._userList.addUser(user);
|
this._userList.addUser(user);
|
||||||
@ -1234,9 +1286,9 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onOpened: function() {
|
_onOpened: function() {
|
||||||
Main.ctrlAltTabManager.addGroup(this._mainContentBox,
|
Main.ctrlAltTabManager.addGroup(this.dialogLayout,
|
||||||
_("Login Window"),
|
_("Login Window"),
|
||||||
'dialog-password',
|
'dialog-password-symbolic',
|
||||||
{ sortGroup: CtrlAltTab.SortGroup.MIDDLE });
|
{ sortGroup: CtrlAltTab.SortGroup.MIDDLE });
|
||||||
|
|
||||||
},
|
},
|
||||||
@ -1244,6 +1296,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
close: function() {
|
close: function() {
|
||||||
this.parent();
|
this.parent();
|
||||||
|
|
||||||
Main.ctrlAltTabManager.removeGroup(this._group);
|
Main.ctrlAltTabManager.removeGroup(this.dialogLayout);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -18,11 +18,12 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const UPowerGlib = imports.gi.UPowerGlib;
|
|
||||||
|
|
||||||
const LoginManager = imports.misc.loginManager;
|
const LoginManager = imports.misc.loginManager;
|
||||||
|
|
||||||
|
const GdmUtil = imports.gdm.util;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
@ -31,16 +32,16 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('system-shutdown-symbolic', null);
|
/* Translators: accessible name of the power menu in the login screen */
|
||||||
this._upClient = new UPowerGlib.Client();
|
this.parent('system-shutdown-symbolic', _("Power"));
|
||||||
|
|
||||||
this._loginManager = LoginManager.getLoginManager();
|
this._loginManager = LoginManager.getLoginManager();
|
||||||
|
|
||||||
this._createSubMenu();
|
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
||||||
|
this._settings.connect('changed::disable-restart-buttons',
|
||||||
|
Lang.bind(this, this._updateVisibility));
|
||||||
|
|
||||||
this._upClient.connect('notify::can-suspend',
|
this._createSubMenu();
|
||||||
Lang.bind(this, this._updateHaveSuspend));
|
|
||||||
this._updateHaveSuspend();
|
|
||||||
|
|
||||||
// ConsoleKit doesn't send notifications when shutdown/reboot
|
// ConsoleKit doesn't send notifications when shutdown/reboot
|
||||||
// are disabled, so we update the menu item each time the menu opens
|
// are disabled, so we update the menu item each time the menu opens
|
||||||
@ -49,15 +50,17 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
if (open) {
|
if (open) {
|
||||||
this._updateHaveShutdown();
|
this._updateHaveShutdown();
|
||||||
this._updateHaveRestart();
|
this._updateHaveRestart();
|
||||||
|
this._updateHaveSuspend();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
this._updateHaveShutdown();
|
this._updateHaveShutdown();
|
||||||
this._updateHaveRestart();
|
this._updateHaveRestart();
|
||||||
|
this._updateHaveSuspend();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateVisibility: function() {
|
_updateVisibility: function() {
|
||||||
let shouldBeVisible = (this._haveSuspend || this._haveShutdown || this._haveRestart);
|
let shouldBeVisible = (this._haveSuspend || this._haveShutdown || this._haveRestart);
|
||||||
this.actor.visible = shouldBeVisible;
|
this.actor.visible = shouldBeVisible && !this._settings.get_boolean('disable-restart-buttons');
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateHaveShutdown: function() {
|
_updateHaveShutdown: function() {
|
||||||
@ -77,9 +80,11 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateHaveSuspend: function() {
|
_updateHaveSuspend: function() {
|
||||||
this._haveSuspend = this._upClient.get_can_suspend();
|
this._loginManager.canSuspend(Lang.bind(this, function(result) {
|
||||||
this._suspendItem.actor.visible = this._haveSuspend;
|
this._haveSuspend = result;
|
||||||
this._updateVisibility();
|
this._suspendItem.actor.visible = this._haveSuspend;
|
||||||
|
this._updateVisibility();
|
||||||
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_createSubMenu: function() {
|
_createSubMenu: function() {
|
||||||
@ -102,8 +107,10 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onActivateSuspend: function() {
|
_onActivateSuspend: function() {
|
||||||
if (this._haveSuspend)
|
if (!this._haveSuspend)
|
||||||
this._upClient.suspend_sync(null);
|
return;
|
||||||
|
|
||||||
|
this._loginManager.suspend();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onActivateRestart: function() {
|
_onActivateRestart: function() {
|
||||||
|
@ -23,6 +23,7 @@ const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text';
|
|||||||
const ALLOWED_FAILURES_KEY = 'allowed-failures';
|
const ALLOWED_FAILURES_KEY = 'allowed-failures';
|
||||||
|
|
||||||
const LOGO_KEY = 'logo';
|
const LOGO_KEY = 'logo';
|
||||||
|
const DISABLE_USER_LIST_KEY = 'disable-user-list';
|
||||||
|
|
||||||
function fadeInActor(actor) {
|
function fadeInActor(actor) {
|
||||||
if (actor.opacity == 255 && actor.visible)
|
if (actor.opacity == 255 && actor.visible)
|
||||||
@ -125,6 +126,9 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
answerQuery: function(serviceName, answer) {
|
answerQuery: function(serviceName, answer) {
|
||||||
|
// Clear any previous message
|
||||||
|
this.emit('show-message', null, null);
|
||||||
|
|
||||||
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -143,7 +147,7 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
|
|
||||||
_reportInitError: function(where, error) {
|
_reportInitError: function(where, error) {
|
||||||
logError(error, where);
|
logError(error, where);
|
||||||
this._hold.relase();
|
this._hold.release();
|
||||||
|
|
||||||
this.emit('show-message', _("Authentication error"), 'login-dialog-message-warning');
|
this.emit('show-message', _("Authentication error"), 'login-dialog-message-warning');
|
||||||
this._verificationFailed(false);
|
this._verificationFailed(false);
|
||||||
@ -330,12 +334,11 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
// Otherwise, we allow ALLOWED_FAILURES attempts. After that, we
|
// Otherwise, we allow ALLOWED_FAILURES attempts. After that, we
|
||||||
// go back to the welcome screen.
|
// go back to the welcome screen.
|
||||||
|
|
||||||
|
this._failCounter++;
|
||||||
let canRetry = retry && this._userName &&
|
let canRetry = retry && this._userName &&
|
||||||
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY);
|
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY);
|
||||||
|
|
||||||
if (canRetry) {
|
if (canRetry) {
|
||||||
this._failCounter++;
|
|
||||||
|
|
||||||
this.clear();
|
this.clear();
|
||||||
this.begin(this._userName, new Batch.Hold());
|
this.begin(this._userName, new Batch.Hold());
|
||||||
} else {
|
} else {
|
||||||
|
@ -120,11 +120,6 @@ function createExtensionObject(uuid, dir, type) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Encourage people to add this
|
|
||||||
if (!meta.url) {
|
|
||||||
log('Warning: Missing "url" property in %s/metadata.json'.format(uuid));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uuid != meta.uuid) {
|
if (uuid != meta.uuid) {
|
||||||
throw new Error('uuid "' + meta.uuid + '" from metadata.json does not match directory name "' + uuid + '"');
|
throw new Error('uuid "' + meta.uuid + '" from metadata.json does not match directory name "' + uuid + '"');
|
||||||
}
|
}
|
||||||
@ -161,7 +156,8 @@ const ExtensionFinder = new Lang.Class({
|
|||||||
try {
|
try {
|
||||||
fileEnum = dir.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
|
fileEnum = dir.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
logError(e, 'Could not enumerate extensions directory');
|
if (e.domain != Gio.io_error_quark() || e.code != Gio.IOErrorEnum.NOT_FOUND)
|
||||||
|
logError(e, 'Could not enumerate extensions directory');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
|
const UPowerGlib = imports.gi.UPowerGlib;
|
||||||
|
|
||||||
const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager'>
|
const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager'>
|
||||||
<method name='PowerOff'>
|
<method name='PowerOff'>
|
||||||
@ -12,12 +14,18 @@ const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager
|
|||||||
<method name='Reboot'>
|
<method name='Reboot'>
|
||||||
<arg type='b' direction='in'/>
|
<arg type='b' direction='in'/>
|
||||||
</method>
|
</method>
|
||||||
|
<method name='Suspend'>
|
||||||
|
<arg type='b' direction='in'/>
|
||||||
|
</method>
|
||||||
<method name='CanPowerOff'>
|
<method name='CanPowerOff'>
|
||||||
<arg type='s' direction='out'/>
|
<arg type='s' direction='out'/>
|
||||||
</method>
|
</method>
|
||||||
<method name='CanReboot'>
|
<method name='CanReboot'>
|
||||||
<arg type='s' direction='out'/>
|
<arg type='s' direction='out'/>
|
||||||
</method>
|
</method>
|
||||||
|
<method name='CanSuspend'>
|
||||||
|
<arg type='s' direction='out'/>
|
||||||
|
</method>
|
||||||
</interface>;
|
</interface>;
|
||||||
|
|
||||||
const SystemdLoginSessionIface = <interface name='org.freedesktop.login1.Session'>
|
const SystemdLoginSessionIface = <interface name='org.freedesktop.login1.Session'>
|
||||||
@ -123,12 +131,25 @@ const LoginManagerSystemd = new Lang.Class({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
canSuspend: function(asyncCallback) {
|
||||||
|
this._proxy.CanSuspendRemote(function(result, error) {
|
||||||
|
if (error)
|
||||||
|
asyncCallback(false);
|
||||||
|
else
|
||||||
|
asyncCallback(result[0] != 'no');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
powerOff: function() {
|
powerOff: function() {
|
||||||
this._proxy.PowerOffRemote(true);
|
this._proxy.PowerOffRemote(true);
|
||||||
},
|
},
|
||||||
|
|
||||||
reboot: function() {
|
reboot: function() {
|
||||||
this._proxy.RebootRemote(true);
|
this._proxy.RebootRemote(true);
|
||||||
|
},
|
||||||
|
|
||||||
|
suspend: function() {
|
||||||
|
this._proxy.SuspendRemote(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -139,6 +160,7 @@ const LoginManagerConsoleKit = new Lang.Class({
|
|||||||
this._proxy = new ConsoleKitManager(Gio.DBus.system,
|
this._proxy = new ConsoleKitManager(Gio.DBus.system,
|
||||||
'org.freedesktop.ConsoleKit',
|
'org.freedesktop.ConsoleKit',
|
||||||
'/org/freedesktop/ConsoleKit/Manager');
|
'/org/freedesktop/ConsoleKit/Manager');
|
||||||
|
this._upClient = new UPowerGlib.Client();
|
||||||
},
|
},
|
||||||
|
|
||||||
// Having this function is a bit of a hack since the Systemd and ConsoleKit
|
// Having this function is a bit of a hack since the Systemd and ConsoleKit
|
||||||
@ -186,12 +208,22 @@ const LoginManagerConsoleKit = new Lang.Class({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
canSuspend: function(asyncCallback) {
|
||||||
|
Mainloop.idle_add(Lang.bind(this, function() {
|
||||||
|
asyncCallback(this._upClient.get_can_suspend());
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
powerOff: function() {
|
powerOff: function() {
|
||||||
this._proxy.StopRemote();
|
this._proxy.StopRemote();
|
||||||
},
|
},
|
||||||
|
|
||||||
reboot: function() {
|
reboot: function() {
|
||||||
this._proxy.RestartRemote();
|
this._proxy.RestartRemote();
|
||||||
|
},
|
||||||
|
|
||||||
|
suspend: function() {
|
||||||
|
this._upClient.suspend_sync(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -46,8 +46,70 @@ let _providersTable;
|
|||||||
function _getProvidersTable() {
|
function _getProvidersTable() {
|
||||||
if (_providersTable)
|
if (_providersTable)
|
||||||
return _providersTable;
|
return _providersTable;
|
||||||
let [providers, countryCodes] = Shell.mobile_providers_parse();
|
return _providersTable = Shell.mobile_providers_parse(null,null);
|
||||||
return _providersTable = providers;
|
}
|
||||||
|
|
||||||
|
function findProviderForMCCMNC(table, needle) {
|
||||||
|
let needlemcc = needle.substring(0, 3);
|
||||||
|
let needlemnc = needle.substring(3, needle.length);
|
||||||
|
|
||||||
|
let name2, name3;
|
||||||
|
for (let iter in table) {
|
||||||
|
let country = table[iter];
|
||||||
|
let providers = country.get_providers();
|
||||||
|
|
||||||
|
// Search through each country's providers
|
||||||
|
for (let i = 0; i < providers.length; i++) {
|
||||||
|
let provider = providers[i];
|
||||||
|
|
||||||
|
// Search through MCC/MNC list
|
||||||
|
let list = provider.get_gsm_mcc_mnc();
|
||||||
|
for (let j = 0; j < list.length; j++) {
|
||||||
|
let mccmnc = list[j];
|
||||||
|
|
||||||
|
// Match both 2-digit and 3-digit MNC; prefer a
|
||||||
|
// 3-digit match if found, otherwise a 2-digit one.
|
||||||
|
if (mccmnc.mcc != needlemcc)
|
||||||
|
continue; // MCC was wrong
|
||||||
|
|
||||||
|
if (!name3 && needle.length == 6 && needlemnc == mccmnc.mnc)
|
||||||
|
name3 = provider.name;
|
||||||
|
|
||||||
|
if (!name2 && needlemnc.substring(0, 2) == mccmnc.mnc.substring(0, 2))
|
||||||
|
name2 = provider.name;
|
||||||
|
|
||||||
|
if (name2 && name3)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return name3 || name2 || null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function findProviderForSid(table, sid) {
|
||||||
|
if (sid == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// Search through each country
|
||||||
|
for (let iter in table) {
|
||||||
|
let country = table[iter];
|
||||||
|
let providers = country.get_providers();
|
||||||
|
|
||||||
|
// Search through each country's providers
|
||||||
|
for (let i = 0; i < providers.length; i++) {
|
||||||
|
let provider = providers[i];
|
||||||
|
let cdma_sid = provider.get_cdma_sid();
|
||||||
|
|
||||||
|
// Search through CDMA SID list
|
||||||
|
for (let j = 0; j < cdma_sid.length; j++) {
|
||||||
|
if (cdma_sid[j] == sid)
|
||||||
|
return provider.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ModemGsm = new Lang.Class({
|
const ModemGsm = new Lang.Class({
|
||||||
@ -91,64 +153,29 @@ const ModemGsm = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_findOperatorName: function(name, opCode) {
|
_findOperatorName: function(name, opCode) {
|
||||||
if (name.length != 0 && (name.length > 6 || name.length < 5)) {
|
if (name) {
|
||||||
// this looks like a valid name, i.e. not an MCCMNC (that some
|
if (name && name.length != 0 && (name.length > 6 || name.length < 5)) {
|
||||||
// devices return when not yet connected
|
// this looks like a valid name, i.e. not an MCCMNC (that some
|
||||||
return name;
|
// devices return when not yet connected
|
||||||
}
|
return name;
|
||||||
if (isNaN(parseInt(name))) {
|
}
|
||||||
// name is definitely not a MCCMNC, so it may be a name
|
if (isNaN(parseInt(name))) {
|
||||||
// after all; return that
|
// name is definitely not a MCCMNC, so it may be a name
|
||||||
return name;
|
// after all; return that
|
||||||
|
return name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let needle;
|
let needle;
|
||||||
if (name.length == 0 && opCode)
|
if ((name == null || name.length == 0) && opCode)
|
||||||
needle = opCode;
|
needle = opCode;
|
||||||
else if (name.length == 6 || name.length == 5)
|
else if (name.length == 6 || name.length == 5)
|
||||||
needle = name;
|
needle = name;
|
||||||
else // nothing to search
|
else // nothing to search
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return this._findProviderForMCCMNC(needle);
|
|
||||||
},
|
|
||||||
|
|
||||||
_findProviderForMCCMNC: function(needle) {
|
|
||||||
let table = _getProvidersTable();
|
let table = _getProvidersTable();
|
||||||
let needlemcc = needle.substring(0, 3);
|
return findProviderForMCCMNC(table, needle);
|
||||||
let needlemnc = needle.substring(3, needle.length);
|
|
||||||
|
|
||||||
let name2, name3;
|
|
||||||
for (let iter in table) {
|
|
||||||
let providers = table[iter];
|
|
||||||
|
|
||||||
// Search through each country's providers
|
|
||||||
for (let i = 0; i < providers.length; i++) {
|
|
||||||
let provider = providers[i];
|
|
||||||
|
|
||||||
// Search through MCC/MNC list
|
|
||||||
let list = provider.get_gsm_mcc_mnc();
|
|
||||||
for (let j = 0; j < list.length; j++) {
|
|
||||||
let mccmnc = list[j];
|
|
||||||
|
|
||||||
// Match both 2-digit and 3-digit MNC; prefer a
|
|
||||||
// 3-digit match if found, otherwise a 2-digit one.
|
|
||||||
if (mccmnc.mcc != needlemcc)
|
|
||||||
continue; // MCC was wrong
|
|
||||||
|
|
||||||
if (!name3 && needle.length == 6 && needlemnc == mccmnc.mnc)
|
|
||||||
name3 = provider.name;
|
|
||||||
|
|
||||||
if (!name2 && needlemnc.substring(0, 2) == mccmnc.mnc.substring(0, 2))
|
|
||||||
name2 = provider.name;
|
|
||||||
|
|
||||||
if (name2 && name3)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return name3 || name2 || null;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(ModemGsm.prototype);
|
Signals.addSignalMethods(ModemGsm.prototype);
|
||||||
@ -189,39 +216,14 @@ const ModemCdma = new Lang.Class({
|
|||||||
this.operator_name = null;
|
this.operator_name = null;
|
||||||
} else {
|
} else {
|
||||||
let [bandClass, band, id] = result;
|
let [bandClass, band, id] = result;
|
||||||
if (name.length > 0)
|
if (name.length > 0) {
|
||||||
this.operator_name = this._findProviderForSid(id);
|
let table = _getProvidersTable();
|
||||||
else
|
this.operator_name = findProviderForSid(table, id);
|
||||||
|
} else
|
||||||
this.operator_name = null;
|
this.operator_name = null;
|
||||||
}
|
}
|
||||||
this.emit('notify::operator-name');
|
this.emit('notify::operator-name');
|
||||||
}));
|
}));
|
||||||
},
|
|
||||||
|
|
||||||
_findProviderForSid: function(sid) {
|
|
||||||
if (sid == 0)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
let table = _getProvidersTable();
|
|
||||||
|
|
||||||
// Search through each country
|
|
||||||
for (let iter in table) {
|
|
||||||
let providers = table[iter];
|
|
||||||
|
|
||||||
// Search through each country's providers
|
|
||||||
for (let i = 0; i < providers.length; i++) {
|
|
||||||
let provider = providers[i];
|
|
||||||
let cdma_sid = provider.get_cdma_sid();
|
|
||||||
|
|
||||||
// Search through CDMA SID list
|
|
||||||
for (let j = 0; j < cdma_sid.length; j++) {
|
|
||||||
if (cdma_sid[j] == sid)
|
|
||||||
return provider.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(ModemCdma.prototype);
|
Signals.addSignalMethods(ModemCdma.prototype);
|
||||||
|
@ -159,86 +159,6 @@ function killall(processName) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This was ported from network-manager-applet
|
|
||||||
// Copyright 2007 - 2011 Red Hat, Inc.
|
|
||||||
// Author: Dan Williams <dcbw@redhat.com>
|
|
||||||
|
|
||||||
const _IGNORED_WORDS = [
|
|
||||||
'Semiconductor',
|
|
||||||
'Components',
|
|
||||||
'Corporation',
|
|
||||||
'Communications',
|
|
||||||
'Company',
|
|
||||||
'Corp.',
|
|
||||||
'Corp',
|
|
||||||
'Co.',
|
|
||||||
'Inc.',
|
|
||||||
'Inc',
|
|
||||||
'Incorporated',
|
|
||||||
'Ltd.',
|
|
||||||
'Limited.',
|
|
||||||
'Intel',
|
|
||||||
'chipset',
|
|
||||||
'adapter',
|
|
||||||
'[hex]',
|
|
||||||
'NDIS',
|
|
||||||
'Module'
|
|
||||||
];
|
|
||||||
|
|
||||||
const _IGNORED_PHRASES = [
|
|
||||||
'Multiprotocol MAC/baseband processor',
|
|
||||||
'Wireless LAN Controller',
|
|
||||||
'Wireless LAN Adapter',
|
|
||||||
'Wireless Adapter',
|
|
||||||
'Network Connection',
|
|
||||||
'Wireless Cardbus Adapter',
|
|
||||||
'Wireless CardBus Adapter',
|
|
||||||
'54 Mbps Wireless PC Card',
|
|
||||||
'Wireless PC Card',
|
|
||||||
'Wireless PC',
|
|
||||||
'PC Card with XJACK(r) Antenna',
|
|
||||||
'Wireless cardbus',
|
|
||||||
'Wireless LAN PC Card',
|
|
||||||
'Technology Group Ltd.',
|
|
||||||
'Communication S.p.A.',
|
|
||||||
'Business Mobile Networks BV',
|
|
||||||
'Mobile Broadband Minicard Composite Device',
|
|
||||||
'Mobile Communications AB',
|
|
||||||
'(PC-Suite Mode)'
|
|
||||||
];
|
|
||||||
|
|
||||||
function fixupPCIDescription(desc) {
|
|
||||||
desc = desc.replace(/[_,]/, ' ');
|
|
||||||
|
|
||||||
/* Attempt to shorten ID by ignoring certain phrases */
|
|
||||||
for (let i = 0; i < _IGNORED_PHRASES.length; i++) {
|
|
||||||
let item = _IGNORED_PHRASES[i];
|
|
||||||
let pos = desc.indexOf(item);
|
|
||||||
if (pos != -1) {
|
|
||||||
let before = desc.substring(0, pos);
|
|
||||||
let after = desc.substring(pos + item.length, desc.length);
|
|
||||||
desc = before + after;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Attmept to shorten ID by ignoring certain individual words */
|
|
||||||
let words = desc.split(' ');
|
|
||||||
let out = [ ];
|
|
||||||
for (let i = 0; i < words.length; i++) {
|
|
||||||
let item = words[i];
|
|
||||||
|
|
||||||
// skip empty items (that come out from consecutive spaces)
|
|
||||||
if (item.length == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (_IGNORED_WORDS.indexOf(item) == -1) {
|
|
||||||
out.push(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return out.join(' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
// lowerBound:
|
// lowerBound:
|
||||||
// @array: an array or array-like object, already sorted
|
// @array: an array or array-like object, already sorted
|
||||||
// according to @cmp
|
// according to @cmp
|
||||||
|
@ -172,7 +172,7 @@ const AltTabPopup = new Lang.Class({
|
|||||||
|
|
||||||
if (!Main.pushModal(this.actor)) {
|
if (!Main.pushModal(this.actor)) {
|
||||||
// Probably someone else has a pointer grab, try again with keyboard only
|
// Probably someone else has a pointer grab, try again with keyboard only
|
||||||
if (!Main.pushModal(this.actor, global.get_current_time(), Meta.ModalOptions.POINTER_ALREADY_GRABBED)) {
|
if (!Main.pushModal(this.actor, { options: Meta.ModalOptions.POINTER_ALREADY_GRABBED })) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -479,7 +479,6 @@ const AppWellIcon = new Lang.Class({
|
|||||||
Lang.bind(this,
|
Lang.bind(this,
|
||||||
this._onStateChanged));
|
this._onStateChanged));
|
||||||
this._onStateChanged();
|
this._onStateChanged();
|
||||||
this.isMenuUp = false;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
@ -561,7 +560,8 @@ const AppWellIcon = new Lang.Class({
|
|||||||
this._menuManager.addMenu(this._menu);
|
this._menuManager.addMenu(this._menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.isMenuUp = true;
|
this.emit('menu-state-changed', true);
|
||||||
|
|
||||||
this.actor.set_hover(true);
|
this.actor.set_hover(true);
|
||||||
this._menu.popup();
|
this._menu.popup();
|
||||||
|
|
||||||
@ -578,7 +578,7 @@ const AppWellIcon = new Lang.Class({
|
|||||||
|
|
||||||
_onMenuPoppedDown: function() {
|
_onMenuPoppedDown: function() {
|
||||||
this.actor.sync_hover();
|
this.actor.sync_hover();
|
||||||
this.isMenuUp = false;
|
this.emit('menu-state-changed', false);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onActivate: function (event) {
|
_onActivate: function (event) {
|
||||||
|
@ -84,9 +84,12 @@ const AppFavorites = new Lang.Class({
|
|||||||
|
|
||||||
let app = Shell.AppSystem.get_default().lookup_app(appId);
|
let app = Shell.AppSystem.get_default().lookup_app(appId);
|
||||||
|
|
||||||
Main.overview.setMessage(_("%s has been added to your favorites.").format(app.get_name()), Lang.bind(this, function () {
|
Main.overview.setMessage(_("%s has been added to your favorites.").format(app.get_name()),
|
||||||
this._removeFavorite(appId);
|
{ forFeedback: true,
|
||||||
}));
|
undoCallback: Lang.bind(this, function () {
|
||||||
|
this._removeFavorite(appId);
|
||||||
|
})
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
addFavorite: function(appId) {
|
addFavorite: function(appId) {
|
||||||
@ -116,9 +119,11 @@ const AppFavorites = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Main.overview.setMessage(_("%s has been removed from your favorites.").format(app.get_name()),
|
Main.overview.setMessage(_("%s has been removed from your favorites.").format(app.get_name()),
|
||||||
Lang.bind(this, function () {
|
{ forFeedback: true,
|
||||||
this._addFavorite(appId, pos);
|
undoCallback: Lang.bind(this, function () {
|
||||||
}));
|
this._addFavorite(appId, pos);
|
||||||
|
})
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(AppFavorites.prototype);
|
Signals.addSignalMethods(AppFavorites.prototype);
|
||||||
|
@ -141,6 +141,7 @@ const BoxPointer = new Lang.Class({
|
|||||||
|
|
||||||
this._muteInput();
|
this._muteInput();
|
||||||
|
|
||||||
|
Tweener.removeTweens(this);
|
||||||
Tweener.addTween(this, { opacity: fade ? 0 : 255,
|
Tweener.addTween(this, { opacity: fade ? 0 : 255,
|
||||||
xOffset: xOffset,
|
xOffset: xOffset,
|
||||||
yOffset: yOffset,
|
yOffset: yOffset,
|
||||||
|
@ -270,8 +270,9 @@ const DBusEventSource = new Lang.Class({
|
|||||||
this._loadEvents(false);
|
this._loadEvents(false);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onEventsReceived: function([appointments]) {
|
_onEventsReceived: function(results, error) {
|
||||||
let newEvents = [];
|
let newEvents = [];
|
||||||
|
let appointments = results ? results[0] : null;
|
||||||
if (appointments != null) {
|
if (appointments != null) {
|
||||||
for (let n = 0; n < appointments.length; n++) {
|
for (let n = 0; n < appointments.length; n++) {
|
||||||
let a = appointments[n];
|
let a = appointments[n];
|
||||||
|
@ -44,6 +44,17 @@ function isMountRootHidden(root) {
|
|||||||
return (path.indexOf('/.') != -1);
|
return (path.indexOf('/.') != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isMountNonLocal(mount) {
|
||||||
|
// If the mount doesn't have an associated volume, that means it's
|
||||||
|
// an uninteresting filesystem. Most devices that we care about will
|
||||||
|
// have a mount, like media players and USB sticks.
|
||||||
|
let volume = mount.get_volume();
|
||||||
|
if (volume == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return (volume.get_identifier("class") == "network");
|
||||||
|
}
|
||||||
|
|
||||||
function startAppForMount(app, mount) {
|
function startAppForMount(app, mount) {
|
||||||
let files = [];
|
let files = [];
|
||||||
let root = mount.get_root();
|
let root = mount.get_root();
|
||||||
@ -83,13 +94,21 @@ const ContentTypeDiscoverer = new Lang.Class({
|
|||||||
|
|
||||||
_init: function(callback) {
|
_init: function(callback) {
|
||||||
this._callback = callback;
|
this._callback = callback;
|
||||||
|
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
|
||||||
},
|
},
|
||||||
|
|
||||||
guessContentTypes: function(mount) {
|
guessContentTypes: function(mount) {
|
||||||
// guess mount's content types using GIO
|
let autorunEnabled = !this._settings.get_boolean(SETTING_DISABLE_AUTORUN);
|
||||||
mount.guess_content_type(false, null,
|
let shouldScan = autorunEnabled && !isMountNonLocal(mount);
|
||||||
Lang.bind(this,
|
|
||||||
this._onContentTypeGuessed));
|
if (shouldScan) {
|
||||||
|
// guess mount's content types using GIO
|
||||||
|
mount.guess_content_type(false, null,
|
||||||
|
Lang.bind(this,
|
||||||
|
this._onContentTypeGuessed));
|
||||||
|
} else {
|
||||||
|
this._emitCallback(mount, []);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_onContentTypeGuessed: function(mount, res) {
|
_onContentTypeGuessed: function(mount, res) {
|
||||||
@ -175,16 +194,21 @@ const AutorunManager = new Lang.Class({
|
|||||||
this._volumeMonitor.disconnect(this._mountRemovedId);
|
this._volumeMonitor.disconnect(this._mountRemovedId);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_processMount: function(mount, hotplug) {
|
||||||
|
let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) {
|
||||||
|
this._ensureResidentSource();
|
||||||
|
this._residentSource.addMount(mount, apps);
|
||||||
|
|
||||||
|
if (hotplug)
|
||||||
|
this._transDispatcher.addMount(mount, apps, contentTypes);
|
||||||
|
}));
|
||||||
|
discoverer.guessContentTypes(mount);
|
||||||
|
},
|
||||||
|
|
||||||
_scanMounts: function() {
|
_scanMounts: function() {
|
||||||
let mounts = this._volumeMonitor.get_mounts();
|
let mounts = this._volumeMonitor.get_mounts();
|
||||||
mounts.forEach(Lang.bind(this, function (mount) {
|
mounts.forEach(Lang.bind(this, function(mount) {
|
||||||
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
|
this._processMount(mount, false);
|
||||||
function (mount, apps) {
|
|
||||||
this._ensureResidentSource();
|
|
||||||
this._residentSource.addMount(mount, apps);
|
|
||||||
}));
|
|
||||||
|
|
||||||
discoverer.guessContentTypes(mount);
|
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -194,14 +218,7 @@ const AutorunManager = new Lang.Class({
|
|||||||
if (!this._loginManager.sessionActive)
|
if (!this._loginManager.sessionActive)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
|
this._processMount(mount, true);
|
||||||
function (mount, apps, contentTypes) {
|
|
||||||
this._transDispatcher.addMount(mount, apps, contentTypes);
|
|
||||||
this._ensureResidentSource();
|
|
||||||
this._residentSource.addMount(mount, apps);
|
|
||||||
}));
|
|
||||||
|
|
||||||
discoverer.guessContentTypes(mount);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onMountRemoved: function(monitor, mount) {
|
_onMountRemoved: function(monitor, mount) {
|
||||||
@ -391,7 +408,7 @@ const AutorunResidentNotification = new Lang.Class({
|
|||||||
expand: true });
|
expand: true });
|
||||||
|
|
||||||
let ejectIcon =
|
let ejectIcon =
|
||||||
new St.Icon({ icon_name: 'media-eject',
|
new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||||
style_class: 'hotplug-resident-eject-icon' });
|
style_class: 'hotplug-resident-eject-icon' });
|
||||||
|
|
||||||
let ejectButton =
|
let ejectButton =
|
||||||
@ -527,9 +544,8 @@ const AutorunTransientSource = new Lang.Class({
|
|||||||
this.notify(this._notification);
|
this.notify(this._notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
createIcon: function(size) {
|
getIcon: function() {
|
||||||
return new St.Icon({ gicon: this.mount.get_icon(),
|
return this.mount.get_icon();
|
||||||
icon_size: size });
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -592,7 +608,7 @@ const AutorunTransientNotification = new Lang.Class({
|
|||||||
|
|
||||||
_buttonForEject: function() {
|
_buttonForEject: function() {
|
||||||
let box = new St.BoxLayout();
|
let box = new St.BoxLayout();
|
||||||
let icon = new St.Icon({ icon_name: 'media-eject',
|
let icon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||||
style_class: 'hotplug-notification-item-icon' });
|
style_class: 'hotplug-notification-item-icon' });
|
||||||
box.add(icon);
|
box.add(icon);
|
||||||
|
|
||||||
|
@ -408,7 +408,10 @@ const VPNRequestHandler = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
cancel: function() {
|
cancel: function(respond) {
|
||||||
|
if (respond)
|
||||||
|
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED);
|
||||||
|
|
||||||
if (this._newStylePlugin && this._shellDialog) {
|
if (this._newStylePlugin && this._shellDialog) {
|
||||||
this._shellDialog.close(global.get_current_time());
|
this._shellDialog.close(global.get_current_time());
|
||||||
this._shellDialog.destroy();
|
this._shellDialog.destroy();
|
||||||
@ -599,6 +602,16 @@ const NetworkAgent = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
disable: function() {
|
disable: function() {
|
||||||
|
let requestId;
|
||||||
|
|
||||||
|
for (requestId in this._dialogs)
|
||||||
|
this._dialogs[requestId].cancel();
|
||||||
|
this._dialogs = { };
|
||||||
|
|
||||||
|
for (requestId in this._vpnRequests)
|
||||||
|
this._vpnRequests[requestId].cancel(true);
|
||||||
|
this._vpnRequests = { };
|
||||||
|
|
||||||
this._native.unregister();
|
this._native.unregister();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -622,7 +635,7 @@ const NetworkAgent = new Lang.Class({
|
|||||||
this._dialogs[requestId].destroy();
|
this._dialogs[requestId].destroy();
|
||||||
delete this._dialogs[requestId];
|
delete this._dialogs[requestId];
|
||||||
} else if (this._vpnRequests[requestId]) {
|
} else if (this._vpnRequests[requestId]) {
|
||||||
this._vpnRequests[requestId].cancel();
|
this._vpnRequests[requestId].cancel(false);
|
||||||
delete this._vpnRequests[requestId];
|
delete this._vpnRequests[requestId];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -49,7 +49,7 @@ const AuthenticationDialog = new Lang.Class({
|
|||||||
let messageBox = new St.BoxLayout({ style_class: 'prompt-dialog-message-layout',
|
let messageBox = new St.BoxLayout({ style_class: 'prompt-dialog-message-layout',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
mainContentBox.add(messageBox,
|
mainContentBox.add(messageBox,
|
||||||
{ y_align: St.Align.START });
|
{ expand: true, y_align: St.Align.START });
|
||||||
|
|
||||||
this._subjectLabel = new St.Label({ style_class: 'prompt-dialog-headline',
|
this._subjectLabel = new St.Label({ style_class: 'prompt-dialog-headline',
|
||||||
text: _("Authentication Required") });
|
text: _("Authentication Required") });
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
@ -16,13 +17,16 @@ const Recorder = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
enable: function() {
|
enable: function() {
|
||||||
global.display.add_keybinding('toggle-recording',
|
Main.wm.addKeybinding('toggle-recording',
|
||||||
this._bindingSettings,
|
this._bindingSettings,
|
||||||
Meta.KeyBindingFlags.NONE, Lang.bind(this, this._toggleRecorder));
|
Meta.KeyBindingFlags.NONE,
|
||||||
|
Main.KeybindingMode.NORMAL |
|
||||||
|
Main.KeybindingMode.OVERVIEW,
|
||||||
|
Lang.bind(this, this._toggleRecorder));
|
||||||
},
|
},
|
||||||
|
|
||||||
disable: function() {
|
disable: function() {
|
||||||
global.display.remove_keybinding('toggle-recording');
|
Main.wm.removeKeybinding('toggle-recording');
|
||||||
},
|
},
|
||||||
|
|
||||||
_ensureRecorder: function() {
|
_ensureRecorder: function() {
|
||||||
@ -41,7 +45,7 @@ const Recorder = new Lang.Class({
|
|||||||
recorder.set_framerate(this._recorderSettings.get_int('framerate'));
|
recorder.set_framerate(this._recorderSettings.get_int('framerate'));
|
||||||
/* Translators: this is a filename used for screencast recording */
|
/* Translators: this is a filename used for screencast recording */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
recorder.set_filename(_("Screencast from %d %t") + '.' + this._recorderSettings.get_string('file-extension'));
|
recorder.set_file_template(_("Screencast from %d %t") + '.' + this._recorderSettings.get_string('file-extension'));
|
||||||
let pipeline = this._recorderSettings.get_string('pipeline');
|
let pipeline = this._recorderSettings.get_string('pipeline');
|
||||||
|
|
||||||
if (!pipeline.match(/^\s*$/))
|
if (!pipeline.match(/^\s*$/))
|
||||||
|
@ -509,51 +509,42 @@ const ChatSource = new Lang.Class({
|
|||||||
this._notification.appendAliasChange(oldAlias, newAlias);
|
this._notification.appendAliasChange(oldAlias, newAlias);
|
||||||
},
|
},
|
||||||
|
|
||||||
createIcon: function(size) {
|
getIcon: function() {
|
||||||
this._iconBox = new St.Bin({ style_class: 'avatar-box' });
|
|
||||||
this._iconBox._size = size;
|
|
||||||
let textureCache = St.TextureCache.get_default();
|
|
||||||
let file = this._contact.get_avatar_file();
|
let file = this._contact.get_avatar_file();
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
let uri = file.get_uri();
|
return new Gio.FileIcon({ file: file });
|
||||||
this._iconBox.child = textureCache.load_uri_async(uri, this._iconBox._size, this._iconBox._size);
|
|
||||||
} else {
|
} else {
|
||||||
this._iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
return new Gio.ThemedIcon({ name: 'avatar-default' });
|
||||||
icon_size: this._iconBox._size });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return this._iconBox;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
createSecondaryIcon: function() {
|
getSecondaryIcon: function() {
|
||||||
let iconBox = new St.Bin();
|
let iconName;
|
||||||
iconBox.child = new St.Icon({ style_class: 'secondary-icon' });
|
|
||||||
let presenceType = this._contact.get_presence_type();
|
let presenceType = this._contact.get_presence_type();
|
||||||
|
|
||||||
switch (presenceType) {
|
switch (presenceType) {
|
||||||
case Tp.ConnectionPresenceType.AVAILABLE:
|
case Tp.ConnectionPresenceType.AVAILABLE:
|
||||||
iconBox.child.icon_name = 'user-available';
|
iconName = 'user-available';
|
||||||
break;
|
break;
|
||||||
case Tp.ConnectionPresenceType.BUSY:
|
case Tp.ConnectionPresenceType.BUSY:
|
||||||
iconBox.child.icon_name = 'user-busy';
|
iconName = 'user-busy';
|
||||||
break;
|
break;
|
||||||
case Tp.ConnectionPresenceType.OFFLINE:
|
case Tp.ConnectionPresenceType.OFFLINE:
|
||||||
iconBox.child.icon_name = 'user-offline';
|
iconName = 'user-offline';
|
||||||
break;
|
break;
|
||||||
case Tp.ConnectionPresenceType.HIDDEN:
|
case Tp.ConnectionPresenceType.HIDDEN:
|
||||||
iconBox.child.icon_name = 'user-invisible';
|
iconName = 'user-invisible';
|
||||||
break;
|
break;
|
||||||
case Tp.ConnectionPresenceType.AWAY:
|
case Tp.ConnectionPresenceType.AWAY:
|
||||||
iconBox.child.icon_name = 'user-away';
|
iconName = 'user-away';
|
||||||
break;
|
break;
|
||||||
case Tp.ConnectionPresenceType.EXTENDED_AWAY:
|
case Tp.ConnectionPresenceType.EXTENDED_AWAY:
|
||||||
iconBox.child.icon_name = 'user-idle';
|
iconName = 'user-idle';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
iconBox.child.icon_name = 'user-offline';
|
iconName = 'user-offline';
|
||||||
}
|
}
|
||||||
return iconBox;
|
return new Gio.ThemedIcon({ name: iconName });
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateAvatarIcon: function() {
|
_updateAvatarIcon: function() {
|
||||||
@ -564,7 +555,9 @@ const ChatSource = new Lang.Class({
|
|||||||
open: function(notification) {
|
open: function(notification) {
|
||||||
if (this._client.is_handling_channel(this._channel)) {
|
if (this._client.is_handling_channel(this._channel)) {
|
||||||
// We are handling the channel, try to pass it to Empathy
|
// We are handling the channel, try to pass it to Empathy
|
||||||
this._client.delegate_channels_async([this._channel], global.get_current_time(), '', null);
|
this._client.delegate_channels_async([this._channel],
|
||||||
|
global.get_current_time(),
|
||||||
|
'org.freedesktop.Telepathy.Client.Empathy.Chat', null);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// We are not the handler, just ask to present the channel
|
// We are not the handler, just ask to present the channel
|
||||||
@ -733,7 +726,7 @@ const ChatSource = new Lang.Class({
|
|||||||
|
|
||||||
title = GLib.markup_escape_text(this.title, -1);
|
title = GLib.markup_escape_text(this.title, -1);
|
||||||
|
|
||||||
this._notification.update(this._notification.title, null, { customContent: true, secondaryIcon: this.createSecondaryIcon() });
|
this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() });
|
||||||
|
|
||||||
if (message)
|
if (message)
|
||||||
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
||||||
@ -761,7 +754,7 @@ const ChatNotification = new Lang.Class({
|
|||||||
Extends: MessageTray.Notification,
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
this.parent(source, source.title, null, { customContent: true, secondaryIcon: source.createSecondaryIcon() });
|
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
||||||
@ -778,16 +771,19 @@ const ChatNotification = new Lang.Class({
|
|||||||
this.emit('unfocused');
|
this.emit('unfocused');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._oldMaxScrollAdjustment = 0;
|
|
||||||
this._createScrollArea();
|
this._createScrollArea();
|
||||||
this._lastGroup = null;
|
this._lastGroup = null;
|
||||||
this._lastGroupActor = null;
|
this._lastGroupActor = null;
|
||||||
|
|
||||||
|
// Keep track of the bottom position for the current adjustment and
|
||||||
|
// force a scroll to the bottom if things change while we were at the
|
||||||
|
// bottom
|
||||||
|
this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value;
|
||||||
|
this._scrollArea.add_style_class_name('chat-notification-scrollview');
|
||||||
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
|
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
|
||||||
let currentValue = adjustment.value + adjustment.page_size;
|
if (adjustment.value == this._oldMaxScrollValue)
|
||||||
if (currentValue == this._oldMaxScrollAdjustment)
|
|
||||||
this.scrollTo(St.Side.BOTTOM);
|
this.scrollTo(St.Side.BOTTOM);
|
||||||
this._oldMaxScrollAdjustment = adjustment.upper;
|
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._inputHistory = new History.HistoryManager({ entry: this._responseEntry.clutter_text });
|
this._inputHistory = new History.HistoryManager({ entry: this._responseEntry.clutter_text });
|
||||||
@ -939,24 +935,32 @@ const ChatNotification = new Lang.Class({
|
|||||||
|
|
||||||
let format;
|
let format;
|
||||||
|
|
||||||
// Show a week day and time if date is in the last week
|
// Show only the hour if date is on today
|
||||||
if (daysAgo < 1 || (daysAgo < 7 && now.getDay() != date.getDay())) {
|
if(daysAgo < 1){
|
||||||
/* Translators: this is a time format string followed by a date.
|
format = "<b>%H:%M</b>";
|
||||||
If applicable, replace %X with a strftime format valid for your
|
}
|
||||||
locale, without seconds. */
|
// Show the word "Yesterday" and time if date is on yesterday
|
||||||
|
else if(daysAgo <2){
|
||||||
|
/* Translators: this is a time format string followed by the word "Yesterday". i.e. "14:30 on Yesterday"*/
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = _("Sent at <b>%X</b> on <b>%A</b>");
|
format = _("<b>%H:%M</b> on Yesterday");
|
||||||
|
}
|
||||||
|
// Show a week day and time if date is in the last week
|
||||||
|
else if (daysAgo < 7) {
|
||||||
|
/* Translators: this is a time format string followed by a week day name. i.e. "14:30 on Monday*/
|
||||||
|
// xgettext:no-c-format
|
||||||
|
format = _("<b>%H:%M</b> on <b>%A</b>");
|
||||||
|
|
||||||
} else if (date.getYear() == now.getYear()) {
|
} else if (date.getYear() == now.getYear()) {
|
||||||
/* Translators: this is a time format in the style of "Wednesday, May 25",
|
/* Translators: this is a time format in the style of "14:30 on Wednesday, May 25",
|
||||||
shown when you get a chat message in the same year. */
|
shown when you get a chat message in the same year */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = _("Sent on <b>%A</b>, <b>%B %d</b>");
|
format = _("<b>%H:%M</b> on <b>%A</b>, <b>%B</b> <b>%d</b>");
|
||||||
} else {
|
} else {
|
||||||
/* Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
/* Translators: this is a time format in the style of "14:30 on Wednesday, May 25, 2012",
|
||||||
shown when you get a chat message in a different year. */
|
shown when you get a chat message in a different year */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = _("Sent on <b>%A</b>, <b>%B %d</b>, %Y");
|
format = _("<b>%H:%M</b> on <b>%A</b>, <b>%B</b> <b>%d</b>, %Y");
|
||||||
}
|
}
|
||||||
|
|
||||||
return date.toLocaleFormat(format);
|
return date.toLocaleFormat(format);
|
||||||
@ -969,8 +973,7 @@ const ChatNotification = new Lang.Class({
|
|||||||
let timeLabel = this._append({ body: this._formatTimestamp(lastMessageDate),
|
let timeLabel = this._append({ body: this._formatTimestamp(lastMessageDate),
|
||||||
group: 'meta',
|
group: 'meta',
|
||||||
styles: ['chat-meta-message'],
|
styles: ['chat-meta-message'],
|
||||||
childProps: { expand: true, x_fill: false,
|
childProps: { expand: true, x_fill: false },
|
||||||
x_align: St.Align.END },
|
|
||||||
noTimestamp: true,
|
noTimestamp: true,
|
||||||
timestamp: lastMessageTime });
|
timestamp: lastMessageTime });
|
||||||
|
|
||||||
@ -1071,9 +1074,8 @@ const ApproverSource = new Lang.Class({
|
|||||||
this.parent();
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
createIcon: function(size) {
|
getIcon: function() {
|
||||||
return new St.Icon({ gicon: this._gicon,
|
return this._gicon;
|
||||||
icon_size: size });
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1134,7 +1136,7 @@ const AudioVideoNotification = new Lang.Class({
|
|||||||
this.parent(source, title, null, { customContent: true });
|
this.parent(source, title, null, { customContent: true });
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this.addButton('reject', _("Reject"));
|
this.addButton('reject', _("Decline"));
|
||||||
/* translators: this is a button label (verb), not a noun */
|
/* translators: this is a button label (verb), not a noun */
|
||||||
this.addButton('answer', _("Answer"));
|
this.addButton('answer', _("Answer"));
|
||||||
|
|
||||||
|
@ -54,16 +54,17 @@ const CtrlAltTabManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
focusGroup: function(item) {
|
focusGroup: function(item) {
|
||||||
if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE ||
|
if (item.window) {
|
||||||
global.stage_input_mode == Shell.StageInputMode.NORMAL)
|
|
||||||
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
|
|
||||||
|
|
||||||
if (item.window)
|
|
||||||
Main.activateWindow(item.window);
|
Main.activateWindow(item.window);
|
||||||
else if (item.focusCallback)
|
} else if (item.focusCallback) {
|
||||||
item.focusCallback();
|
item.focusCallback();
|
||||||
else
|
} else {
|
||||||
|
if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE ||
|
||||||
|
global.stage_input_mode == Shell.StageInputMode.NORMAL)
|
||||||
|
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
|
||||||
|
|
||||||
item.root.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
item.root.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Sort the items into a consistent order; panel first, tray last,
|
// Sort the items into a consistent order; panel first, tray last,
|
||||||
|
181
js/ui/dash.js
181
js/ui/dash.js
@ -21,6 +21,17 @@ const DASH_ITEM_LABEL_SHOW_TIME = 0.15;
|
|||||||
const DASH_ITEM_LABEL_HIDE_TIME = 0.1;
|
const DASH_ITEM_LABEL_HIDE_TIME = 0.1;
|
||||||
const DASH_ITEM_HOVER_TIMEOUT = 300;
|
const DASH_ITEM_HOVER_TIMEOUT = 300;
|
||||||
|
|
||||||
|
function getAppFromSource(source) {
|
||||||
|
if (source instanceof AppDisplay.AppWellIcon) {
|
||||||
|
return source.app;
|
||||||
|
} else if (source.metaWindow) {
|
||||||
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
|
return tracker.get_window_app(source.metaWindow);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// A container like StBin, but taking the child's scale into account
|
// A container like StBin, but taking the child's scale into account
|
||||||
// when requesting a size
|
// when requesting a size
|
||||||
const DashItemContainer = new Lang.Class({
|
const DashItemContainer = new Lang.Class({
|
||||||
@ -36,7 +47,11 @@ const DashItemContainer = new Lang.Class({
|
|||||||
Lang.bind(this, this._allocate));
|
Lang.bind(this, this._allocate));
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
|
|
||||||
this.label = null;
|
this._labelText = "";
|
||||||
|
this.label = new St.Label({ style_class: 'dash-label'});
|
||||||
|
this.label.hide();
|
||||||
|
Main.layoutManager.addChrome(this.label);
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
|
|
||||||
this.child = null;
|
this.child = null;
|
||||||
this._childScale = 1;
|
this._childScale = 1;
|
||||||
@ -91,9 +106,10 @@ const DashItemContainer = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
showLabel: function() {
|
showLabel: function() {
|
||||||
if (this.label == null)
|
if (!this._labelText)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
this.label.set_text(this._labelText);
|
||||||
this.label.opacity = 0;
|
this.label.opacity = 0;
|
||||||
this.label.show();
|
this.label.show();
|
||||||
|
|
||||||
@ -124,19 +140,11 @@ const DashItemContainer = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setLabelText: function(text) {
|
setLabelText: function(text) {
|
||||||
if (this.label == null) {
|
this._labelText = text;
|
||||||
this.label = new St.Label({ style_class: 'dash-label'});
|
this.child.accessible_name = text;
|
||||||
Main.layoutManager.addChrome(this.label);
|
|
||||||
this.label.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.label.set_text(text);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
hideLabel: function () {
|
hideLabel: function () {
|
||||||
if (this.label == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Tweener.addTween(this.label,
|
Tweener.addTween(this.label,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: DASH_ITEM_LABEL_HIDE_TIME,
|
time: DASH_ITEM_LABEL_HIDE_TIME,
|
||||||
@ -250,8 +258,7 @@ const ShowAppsIcon = new Lang.Class({
|
|||||||
this.toggleButton._delegate = this;
|
this.toggleButton._delegate = this;
|
||||||
|
|
||||||
this.setChild(this.toggleButton);
|
this.setChild(this.toggleButton);
|
||||||
this.setHover(false);
|
this.setDragApp(null);
|
||||||
this.toggleButton.label_actor = this.label;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_createIcon: function(size) {
|
_createIcon: function(size) {
|
||||||
@ -262,31 +269,45 @@ const ShowAppsIcon = new Lang.Class({
|
|||||||
return this._iconActor;
|
return this._iconActor;
|
||||||
},
|
},
|
||||||
|
|
||||||
setHover: function(hovered) {
|
_canRemoveApp: function(app) {
|
||||||
this.toggleButton.set_hover(hovered);
|
if (app == null)
|
||||||
if (this._iconActor)
|
return false;
|
||||||
this._iconActor.set_hover(hovered);
|
|
||||||
|
|
||||||
if (hovered)
|
let id = app.get_id();
|
||||||
|
let isFavorite = AppFavorites.getAppFavorites().isFavorite(id);
|
||||||
|
return isFavorite;
|
||||||
|
},
|
||||||
|
|
||||||
|
setDragApp: function(app) {
|
||||||
|
let canRemove = this._canRemoveApp(app);
|
||||||
|
|
||||||
|
this.toggleButton.set_hover(canRemove);
|
||||||
|
if (this._iconActor)
|
||||||
|
this._iconActor.set_hover(canRemove);
|
||||||
|
|
||||||
|
if (canRemove)
|
||||||
this.setLabelText(_("Remove from Favorites"));
|
this.setLabelText(_("Remove from Favorites"));
|
||||||
else
|
else
|
||||||
this.setLabelText(_("Show Applications"));
|
this.setLabelText(_("Show Applications"));
|
||||||
},
|
},
|
||||||
|
|
||||||
// Rely on the dragged item being a favorite
|
|
||||||
handleDragOver: function(source, actor, x, y, time) {
|
handleDragOver: function(source, actor, x, y, time) {
|
||||||
|
let app = getAppFromSource(source);
|
||||||
|
if (app == null)
|
||||||
|
return DND.DragMotionResult.NO_DROP;
|
||||||
|
|
||||||
|
let id = app.get_id();
|
||||||
|
let isFavorite = AppFavorites.getAppFavorites().isFavorite(id);
|
||||||
|
if (!isFavorite)
|
||||||
|
return DND.DragMotionResult.NO_DROP;
|
||||||
|
|
||||||
return DND.DragMotionResult.MOVE_DROP;
|
return DND.DragMotionResult.MOVE_DROP;
|
||||||
},
|
},
|
||||||
|
|
||||||
acceptDrop: function(source, actor, x, y, time) {
|
acceptDrop: function(source, actor, x, y, time) {
|
||||||
let app = null;
|
let app = getAppFromSource(source);
|
||||||
if (source instanceof AppDisplay.AppWellIcon) {
|
if (app == null)
|
||||||
let appSystem = Shell.AppSystem.get_default();
|
return false;
|
||||||
app = appSystem.lookup_app(source.getId());
|
|
||||||
} else if (source.metaWindow) {
|
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
|
||||||
app = tracker.get_window_app(source.metaWindow);
|
|
||||||
}
|
|
||||||
|
|
||||||
let id = app.get_id();
|
let id = app.get_id();
|
||||||
|
|
||||||
@ -324,22 +345,21 @@ const DashActor = new Lang.Class({
|
|||||||
vfunc_allocate: function(box, flags) {
|
vfunc_allocate: function(box, flags) {
|
||||||
let contentBox = this.get_theme_node().get_content_box(box);
|
let contentBox = this.get_theme_node().get_content_box(box);
|
||||||
let availWidth = contentBox.x2 - contentBox.x1;
|
let availWidth = contentBox.x2 - contentBox.x1;
|
||||||
let availHeight = contentBox.y2 - contentBox.y1;
|
|
||||||
|
|
||||||
this.set_allocation(box, flags);
|
this.set_allocation(box, flags);
|
||||||
|
|
||||||
let [appIcons, showAppsButton] = this.get_children();
|
let [appIcons, showAppsButton] = this.get_children();
|
||||||
let [minHeight, natHeight] = showAppsButton.get_preferred_height(availWidth);
|
let [showAppsMinHeight, showAppsNatHeight] = showAppsButton.get_preferred_height(availWidth);
|
||||||
|
|
||||||
let childBox = new Clutter.ActorBox();
|
let childBox = new Clutter.ActorBox();
|
||||||
childBox.x1 = 0;
|
childBox.x1 = contentBox.x1;
|
||||||
childBox.x2 = availWidth;
|
childBox.y1 = contentBox.y1;
|
||||||
childBox.y1 = 0;
|
childBox.x2 = contentBox.x2;
|
||||||
childBox.y2 = availHeight - natHeight;
|
childBox.y2 = contentBox.y2 - showAppsNatHeight;
|
||||||
appIcons.allocate(childBox, flags);
|
appIcons.allocate(childBox, flags);
|
||||||
|
|
||||||
childBox.y1 = availHeight - natHeight;
|
childBox.y1 = contentBox.y2 - showAppsNatHeight;
|
||||||
childBox.y2 = availHeight;
|
childBox.y2 = contentBox.y2;
|
||||||
showAppsButton.allocate(childBox, flags);
|
showAppsButton.allocate(childBox, flags);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -383,7 +403,6 @@ const Dash = new Lang.Class({
|
|||||||
|
|
||||||
this._workId = Main.initializeDeferredWork(this._box, Lang.bind(this, this._redisplay));
|
this._workId = Main.initializeDeferredWork(this._box, Lang.bind(this, this._redisplay));
|
||||||
|
|
||||||
this._tracker = Shell.WindowTracker.get_default();
|
|
||||||
this._appSystem = Shell.AppSystem.get_default();
|
this._appSystem = Shell.AppSystem.get_default();
|
||||||
|
|
||||||
this._appSystem.connect('installed-changed', Lang.bind(this, this._queueRedisplay));
|
this._appSystem.connect('installed-changed', Lang.bind(this, this._queueRedisplay));
|
||||||
@ -426,31 +445,25 @@ const Dash = new Lang.Class({
|
|||||||
|
|
||||||
_endDrag: function() {
|
_endDrag: function() {
|
||||||
this._clearDragPlaceholder();
|
this._clearDragPlaceholder();
|
||||||
|
this._showAppsIcon.setDragApp(null);
|
||||||
DND.removeDragMonitor(this._dragMonitor);
|
DND.removeDragMonitor(this._dragMonitor);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDragMotion: function(dragEvent) {
|
_onDragMotion: function(dragEvent) {
|
||||||
let app = null;
|
let app = getAppFromSource(dragEvent.source);
|
||||||
if (dragEvent.source instanceof AppDisplay.AppWellIcon)
|
if (app == null)
|
||||||
app = this._appSystem.lookup_app(dragEvent.source.getId());
|
|
||||||
else if (dragEvent.source.metaWindow)
|
|
||||||
app = this._tracker.get_window_app(dragEvent.source.metaWindow);
|
|
||||||
else
|
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
let id = app.get_id();
|
|
||||||
|
|
||||||
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
|
|
||||||
|
|
||||||
let srcIsFavorite = (id in favorites);
|
|
||||||
|
|
||||||
let showAppsHovered =
|
let showAppsHovered =
|
||||||
this._showAppsIcon.actor.contains(dragEvent.targetActor);
|
this._showAppsIcon.actor.contains(dragEvent.targetActor);
|
||||||
|
|
||||||
if (!this._box.contains(dragEvent.targetActor) || showAppsHovered)
|
if (!this._box.contains(dragEvent.targetActor) || showAppsHovered)
|
||||||
this._clearDragPlaceholder();
|
this._clearDragPlaceholder();
|
||||||
|
|
||||||
this._showAppsIcon.setHover(showAppsHovered);
|
if (showAppsHovered)
|
||||||
|
this._showAppsIcon.setDragApp(app);
|
||||||
|
else
|
||||||
|
this._showAppsIcon.setDragApp(null);
|
||||||
|
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
},
|
},
|
||||||
@ -478,32 +491,51 @@ const Dash = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_createAppItem: function(app) {
|
_createAppItem: function(app) {
|
||||||
let display = new AppDisplay.AppWellIcon(app,
|
let appIcon = new AppDisplay.AppWellIcon(app,
|
||||||
{ setSizeManually: true,
|
{ setSizeManually: true,
|
||||||
showLabel: false });
|
showLabel: false });
|
||||||
display._draggable.connect('drag-begin',
|
appIcon._draggable.connect('drag-begin',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
display.actor.opacity = 50;
|
appIcon.actor.opacity = 50;
|
||||||
}));
|
}));
|
||||||
display._draggable.connect('drag-end',
|
appIcon._draggable.connect('drag-end',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
display.actor.opacity = 255;
|
appIcon.actor.opacity = 255;
|
||||||
}));
|
}));
|
||||||
|
appIcon.connect('menu-state-changed',
|
||||||
|
Lang.bind(this, function(appIcon, opened) {
|
||||||
|
this._itemMenuStateChanged(item, opened);
|
||||||
|
}));
|
||||||
|
|
||||||
let item = new DashItemContainer();
|
let item = new DashItemContainer();
|
||||||
item.setChild(display.actor);
|
item.setChild(appIcon.actor);
|
||||||
|
|
||||||
|
// Override default AppWellIcon label_actor, now the
|
||||||
|
// accessible_name is set at DashItemContainer.setLabelText
|
||||||
|
appIcon.actor.label_actor = null;
|
||||||
item.setLabelText(app.get_name());
|
item.setLabelText(app.get_name());
|
||||||
// Override default AppWellIcon label_actor
|
|
||||||
display.actor.label_actor = item.label;
|
appIcon.icon.setIconSize(this.iconSize);
|
||||||
display.icon.setIconSize(this.iconSize);
|
|
||||||
this._hookUpLabel(item);
|
this._hookUpLabel(item);
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_itemMenuStateChanged: function(item, opened) {
|
||||||
|
// When the menu closes, it calls sync_hover, which means
|
||||||
|
// that the notify::hover handler does everything we need to.
|
||||||
|
if (opened) {
|
||||||
|
if (this._showLabelTimeoutId > 0) {
|
||||||
|
Mainloop.source_remove(this._showLabelTimeoutId);
|
||||||
|
this._showLabelTimeoutId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
item.hideLabel();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_onHover: function (item) {
|
_onHover: function (item) {
|
||||||
if (item.child.get_hover() && !item.child._delegate.isMenuUp) {
|
if (item.child.get_hover()) {
|
||||||
if (this._showLabelTimeoutId == 0) {
|
if (this._showLabelTimeoutId == 0) {
|
||||||
let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT;
|
let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT;
|
||||||
this._showLabelTimeoutId = Mainloop.timeout_add(timeout,
|
this._showLabelTimeoutId = Mainloop.timeout_add(timeout,
|
||||||
@ -605,8 +637,10 @@ const Dash = new Lang.Class({
|
|||||||
icon.setIconSize(this.iconSize);
|
icon.setIconSize(this.iconSize);
|
||||||
|
|
||||||
// Don't animate the icon size change when the overview
|
// Don't animate the icon size change when the overview
|
||||||
// is not visible or when initially filling the dash
|
// is transitioning, not visible or when initially filling
|
||||||
if (!Main.overview.visible || !this._shownInitially)
|
// the dash
|
||||||
|
if (!Main.overview.visible || Main.overview.animationInProgress ||
|
||||||
|
!this._shownInitially)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let [targetWidth, targetHeight] = icon.icon.get_size();
|
let [targetWidth, targetHeight] = icon.icon.get_size();
|
||||||
@ -730,8 +764,9 @@ const Dash = new Lang.Class({
|
|||||||
for (let i = 0; i < removedActors.length; i++) {
|
for (let i = 0; i < removedActors.length; i++) {
|
||||||
let item = removedActors[i]._delegate;
|
let item = removedActors[i]._delegate;
|
||||||
|
|
||||||
// Don't animate item removal when the overview is hidden
|
// Don't animate item removal when the overview is transitioning
|
||||||
if (Main.overview.visible)
|
// or hidden
|
||||||
|
if (Main.overview.visible && !Main.overview.animationInProgress)
|
||||||
item.animateOutAndDestroy();
|
item.animateOutAndDestroy();
|
||||||
else
|
else
|
||||||
item.destroy();
|
item.destroy();
|
||||||
@ -746,8 +781,9 @@ const Dash = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't animate item addition when the overview is hidden
|
// Don't animate item addition when the overview is transitioning
|
||||||
if (!Main.overview.visible)
|
// or hidden
|
||||||
|
if (!Main.overview.visible || Main.overview.animationInProgress)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (let i = 0; i < addedItems.length; i++)
|
for (let i = 0; i < addedItems.length; i++)
|
||||||
@ -763,11 +799,7 @@ const Dash = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
handleDragOver : function(source, actor, x, y, time) {
|
handleDragOver : function(source, actor, x, y, time) {
|
||||||
let app = null;
|
let app = getAppFromSource(source);
|
||||||
if (source instanceof AppDisplay.AppWellIcon)
|
|
||||||
app = this._appSystem.lookup_app(source.getId());
|
|
||||||
else if (source.metaWindow)
|
|
||||||
app = this._tracker.get_window_app(source.metaWindow);
|
|
||||||
|
|
||||||
// Don't allow favoriting of transient apps
|
// Don't allow favoriting of transient apps
|
||||||
if (app == null || app.is_window_backed())
|
if (app == null || app.is_window_backed())
|
||||||
@ -848,12 +880,7 @@ const Dash = new Lang.Class({
|
|||||||
|
|
||||||
// Draggable target interface
|
// Draggable target interface
|
||||||
acceptDrop : function(source, actor, x, y, time) {
|
acceptDrop : function(source, actor, x, y, time) {
|
||||||
let app = null;
|
let app = getAppFromSource(source);
|
||||||
if (source instanceof AppDisplay.AppWellIcon) {
|
|
||||||
app = this._appSystem.lookup_app(source.getId());
|
|
||||||
} else if (source.metaWindow) {
|
|
||||||
app = this._tracker.get_window_app(source.metaWindow);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't allow favoriting of transient apps
|
// Don't allow favoriting of transient apps
|
||||||
if (app == null || app.is_window_backed()) {
|
if (app == null || app.is_window_backed()) {
|
||||||
|
@ -89,8 +89,10 @@ const DateMenuButton = new Lang.Class({
|
|||||||
separator.setColumnWidths(1);
|
separator.setColumnWidths(1);
|
||||||
vbox.add(separator.actor, {y_align: St.Align.END, expand: true, y_fill: false});
|
vbox.add(separator.actor, {y_align: St.Align.END, expand: true, y_fill: false});
|
||||||
|
|
||||||
|
item.actor.show_on_set_parent = false;
|
||||||
item.actor.can_focus = false;
|
item.actor.can_focus = false;
|
||||||
item.actor.reparent(vbox);
|
item.actor.reparent(vbox);
|
||||||
|
this._dateAndTimeSeparator = separator;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._separator = new St.DrawingArea({ style_class: 'calendar-vertical-separator',
|
this._separator = new St.DrawingArea({ style_class: 'calendar-vertical-separator',
|
||||||
@ -111,6 +113,11 @@ const DateMenuButton = new Lang.Class({
|
|||||||
this._openCalendarItem.actor.can_focus = false;
|
this._openCalendarItem.actor.can_focus = false;
|
||||||
vbox.add(this._openCalendarItem.actor, {y_align: St.Align.END, expand: true, y_fill: false});
|
vbox.add(this._openCalendarItem.actor, {y_align: St.Align.END, expand: true, y_fill: false});
|
||||||
|
|
||||||
|
this._calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
|
||||||
|
this._calendarSettings.connect('changed::exec',
|
||||||
|
Lang.bind(this, this._calendarSettingsChanged));
|
||||||
|
this._calendarSettingsChanged();
|
||||||
|
|
||||||
// Whenever the menu is opened, select today
|
// Whenever the menu is opened, select today
|
||||||
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
|
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
@ -144,10 +151,25 @@ const DateMenuButton = new Lang.Class({
|
|||||||
this._sessionUpdated();
|
this._sessionUpdated();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_calendarSettingsChanged: function() {
|
||||||
|
let exec = this._calendarSettings.get_string('exec');
|
||||||
|
let fullExec = GLib.find_program_in_path(exec);
|
||||||
|
this._openCalendarItem.actor.visible = fullExec != null;
|
||||||
|
},
|
||||||
|
|
||||||
_setEventsVisibility: function(visible) {
|
_setEventsVisibility: function(visible) {
|
||||||
|
this._openCalendarItem.actor.visible = visible;
|
||||||
this._separator.visible = visible;
|
this._separator.visible = visible;
|
||||||
this._eventList.visible = visible;
|
if (visible) {
|
||||||
this._openCalendarItem.visible = visible;
|
let alignment = 0.25;
|
||||||
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||||
|
alignment = 1.0 - alignment;
|
||||||
|
this.menu._arrowAlignment = alignment;
|
||||||
|
this._eventList.actor.get_parent().show();
|
||||||
|
} else {
|
||||||
|
this.menu._arrowAlignment = 0.5;
|
||||||
|
this._eventList.actor.get_parent().hide();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_setEventSource: function(eventSource) {
|
_setEventSource: function(eventSource) {
|
||||||
@ -165,6 +187,10 @@ const DateMenuButton = new Lang.Class({
|
|||||||
}
|
}
|
||||||
this._setEventSource(eventSource);
|
this._setEventSource(eventSource);
|
||||||
this._setEventsVisibility(showEvents);
|
this._setEventsVisibility(showEvents);
|
||||||
|
|
||||||
|
// This needs to be handled manually, as the code to
|
||||||
|
// autohide separators doesn't work across the vbox
|
||||||
|
this._dateAndTimeSeparator.actor.visible = Main.sessionMode.allowSettings;
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateClockAndDate: function() {
|
_updateClockAndDate: function() {
|
||||||
@ -179,14 +205,13 @@ const DateMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
_onOpenCalendarActivate: function() {
|
_onOpenCalendarActivate: function() {
|
||||||
this.menu.close();
|
this.menu.close();
|
||||||
let calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
|
let tool = this._calendarSettings.get_string('exec');
|
||||||
let tool = calendarSettings.get_string('exec');
|
|
||||||
if (tool.length == 0 || tool.substr(0, 9) == 'evolution') {
|
if (tool.length == 0 || tool.substr(0, 9) == 'evolution') {
|
||||||
// TODO: pass the selected day
|
// TODO: pass the selected day
|
||||||
let app = Shell.AppSystem.get_default().lookup_app('evolution-calendar.desktop');
|
let app = Shell.AppSystem.get_default().lookup_app('evolution-calendar.desktop');
|
||||||
app.activate();
|
app.activate();
|
||||||
} else {
|
} else {
|
||||||
let needTerm = calendarSettings.get_boolean('needs-term');
|
let needTerm = this._calendarSettings.get_boolean('needs-term');
|
||||||
if (needTerm) {
|
if (needTerm) {
|
||||||
let terminalSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.terminal' });
|
let terminalSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.terminal' });
|
||||||
let term = terminalSettings.get_string('exec');
|
let term = terminalSettings.get_string('exec');
|
||||||
|
13
js/ui/dnd.js
13
js/ui/dnd.js
@ -235,6 +235,10 @@ const _Draggable = new Lang.Class({
|
|||||||
|
|
||||||
if (this.actor._delegate && this.actor._delegate.getDragActor) {
|
if (this.actor._delegate && this.actor._delegate.getDragActor) {
|
||||||
this._dragActor = this.actor._delegate.getDragActor(this._dragStartX, this._dragStartY);
|
this._dragActor = this.actor._delegate.getDragActor(this._dragStartX, this._dragStartY);
|
||||||
|
this._dragActor.reparent(Main.uiGroup);
|
||||||
|
this._dragActor.raise_top();
|
||||||
|
Shell.util_set_hidden_from_pick(this._dragActor, true);
|
||||||
|
|
||||||
// Drag actor does not always have to be the same as actor. For example drag actor
|
// Drag actor does not always have to be the same as actor. For example drag actor
|
||||||
// can be an image that's part of the actor. So to perform "snap back" correctly we need
|
// can be an image that's part of the actor. So to perform "snap back" correctly we need
|
||||||
// to know what was the drag actor source.
|
// to know what was the drag actor source.
|
||||||
@ -263,12 +267,17 @@ const _Draggable = new Lang.Class({
|
|||||||
this._dragOffsetY = this._dragActor.y - this._dragStartY;
|
this._dragOffsetY = this._dragActor.y - this._dragStartY;
|
||||||
} else {
|
} else {
|
||||||
this._dragActor = this.actor;
|
this._dragActor = this.actor;
|
||||||
|
|
||||||
this._dragActorSource = undefined;
|
this._dragActorSource = undefined;
|
||||||
this._dragOrigParent = this.actor.get_parent();
|
this._dragOrigParent = this.actor.get_parent();
|
||||||
this._dragOrigX = this._dragActor.x;
|
this._dragOrigX = this._dragActor.x;
|
||||||
this._dragOrigY = this._dragActor.y;
|
this._dragOrigY = this._dragActor.y;
|
||||||
this._dragOrigScale = this._dragActor.scale_x;
|
this._dragOrigScale = this._dragActor.scale_x;
|
||||||
|
|
||||||
|
this._dragActor.reparent(Main.uiGroup);
|
||||||
|
this._dragActor.raise_top();
|
||||||
|
Shell.util_set_hidden_from_pick(this._dragActor, true);
|
||||||
|
|
||||||
let [actorStageX, actorStageY] = this.actor.get_transformed_position();
|
let [actorStageX, actorStageY] = this.actor.get_transformed_position();
|
||||||
this._dragOffsetX = actorStageX - this._dragStartX;
|
this._dragOffsetX = actorStageX - this._dragStartX;
|
||||||
this._dragOffsetY = actorStageY - this._dragStartY;
|
this._dragOffsetY = actorStageY - this._dragStartY;
|
||||||
@ -280,10 +289,6 @@ const _Draggable = new Lang.Class({
|
|||||||
scaledHeight / this.actor.height);
|
scaledHeight / this.actor.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._dragActor.reparent(Main.uiGroup);
|
|
||||||
this._dragActor.raise_top();
|
|
||||||
Shell.util_set_hidden_from_pick(this._dragActor, true);
|
|
||||||
|
|
||||||
this._dragOrigOpacity = this._dragActor.opacity;
|
this._dragOrigOpacity = this._dragActor.opacity;
|
||||||
if (this._dragActorOpacity != undefined)
|
if (this._dragActorOpacity != undefined)
|
||||||
this._dragActor.opacity = this._dragActorOpacity;
|
this._dragActor.opacity = this._dragActorOpacity;
|
||||||
|
@ -105,7 +105,7 @@ const restartDialogContent = {
|
|||||||
endDescription: _("Restarting the system."),
|
endDescription: _("Restarting the system."),
|
||||||
confirmButtons: [{ signal: 'ConfirmedReboot',
|
confirmButtons: [{ signal: 'ConfirmedReboot',
|
||||||
label: C_("button", "Restart") }],
|
label: C_("button", "Restart") }],
|
||||||
iconName: 'system-shutdown-symbolic',
|
iconName: 'view-refresh-symbolic',
|
||||||
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ function _navigateActor(actor) {
|
|||||||
|
|
||||||
// GrabHelper:
|
// GrabHelper:
|
||||||
// @owner: the actor that owns the GrabHelper
|
// @owner: the actor that owns the GrabHelper
|
||||||
|
// @params: optional parameters to pass to Main.pushModal()
|
||||||
//
|
//
|
||||||
// Creates a new GrabHelper object, for dealing with keyboard and pointer grabs
|
// Creates a new GrabHelper object, for dealing with keyboard and pointer grabs
|
||||||
// associated with a set of actors.
|
// associated with a set of actors.
|
||||||
@ -34,8 +35,9 @@ function _navigateActor(actor) {
|
|||||||
const GrabHelper = new Lang.Class({
|
const GrabHelper = new Lang.Class({
|
||||||
Name: 'GrabHelper',
|
Name: 'GrabHelper',
|
||||||
|
|
||||||
_init: function(owner) {
|
_init: function(owner, params) {
|
||||||
this._owner = owner;
|
this._owner = owner;
|
||||||
|
this._modalParams = params;
|
||||||
|
|
||||||
this._grabStack = [];
|
this._grabStack = [];
|
||||||
|
|
||||||
@ -165,7 +167,7 @@ const GrabHelper = new Lang.Class({
|
|||||||
_takeModalGrab: function() {
|
_takeModalGrab: function() {
|
||||||
let firstGrab = (this._modalCount == 0);
|
let firstGrab = (this._modalCount == 0);
|
||||||
if (firstGrab) {
|
if (firstGrab) {
|
||||||
if (!Main.pushModal(this._owner))
|
if (!Main.pushModal(this._owner, this._modalParams))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
|
this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
|
||||||
@ -318,6 +320,9 @@ const GrabHelper = new Lang.Class({
|
|||||||
if (this._isWithinGrabbedActor(event.get_source()))
|
if (this._isWithinGrabbedActor(event.get_source()))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (Main.keyboard.shouldTakeEvent(event))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (button) {
|
if (button) {
|
||||||
// If we have a press event, ignore the next event,
|
// If we have a press event, ignore the next event,
|
||||||
// which should be a release event.
|
// which should be a release event.
|
||||||
|
@ -20,25 +20,6 @@ const KEYBOARD_TYPE = 'keyboard-type';
|
|||||||
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
||||||
const SHOW_KEYBOARD = 'screen-keyboard-enabled';
|
const SHOW_KEYBOARD = 'screen-keyboard-enabled';
|
||||||
|
|
||||||
// Key constants taken from Antler
|
|
||||||
// FIXME: ought to be moved into libcaribou
|
|
||||||
const PRETTY_KEYS = {
|
|
||||||
'BackSpace': '\u232b',
|
|
||||||
'space': ' ',
|
|
||||||
'Return': '\u23ce',
|
|
||||||
'Caribou_Prefs': '\u2328',
|
|
||||||
'Caribou_ShiftUp': '\u2b06',
|
|
||||||
'Caribou_ShiftDown': '\u2b07',
|
|
||||||
'Caribou_Emoticons': '\u263a',
|
|
||||||
'Caribou_Symbols': '123',
|
|
||||||
'Caribou_Symbols_More': '{#*',
|
|
||||||
'Caribou_Alpha': 'Abc',
|
|
||||||
'Tab': 'Tab',
|
|
||||||
'Escape': 'Esc',
|
|
||||||
'Control_L': 'Ctrl',
|
|
||||||
'Alt_L': 'Alt'
|
|
||||||
};
|
|
||||||
|
|
||||||
const CaribouKeyboardIface = <interface name='org.gnome.Caribou.Keyboard'>
|
const CaribouKeyboardIface = <interface name='org.gnome.Caribou.Keyboard'>
|
||||||
<method name='Show'>
|
<method name='Show'>
|
||||||
<arg type='u' direction='in' />
|
<arg type='u' direction='in' />
|
||||||
@ -98,17 +79,7 @@ const Key = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_makeKey: function () {
|
_makeKey: function () {
|
||||||
let label = this._key.name;
|
let label = GLib.markup_escape_text(this._key.label, -1);
|
||||||
|
|
||||||
if (label.length > 1) {
|
|
||||||
let pretty = PRETTY_KEYS[label];
|
|
||||||
if (pretty)
|
|
||||||
label = pretty;
|
|
||||||
else
|
|
||||||
label = this._getUnichar(this._key);
|
|
||||||
}
|
|
||||||
|
|
||||||
label = GLib.markup_escape_text(label, -1);
|
|
||||||
let button = new St.Button ({ label: label,
|
let button = new St.Button ({ label: label,
|
||||||
style_class: 'keyboard-key' });
|
style_class: 'keyboard-key' });
|
||||||
|
|
||||||
@ -200,6 +171,8 @@ const Keyboard = new Lang.Class({
|
|||||||
this._impl.export(Gio.DBus.session, '/org/gnome/Caribou/Keyboard');
|
this._impl.export(Gio.DBus.session, '/org/gnome/Caribou/Keyboard');
|
||||||
|
|
||||||
this.actor = null;
|
this.actor = null;
|
||||||
|
this._focusInTray = false;
|
||||||
|
this._focusInExtendedKeys = false;
|
||||||
|
|
||||||
this._timestamp = global.display.get_current_time_roundtrip();
|
this._timestamp = global.display.get_current_time_roundtrip();
|
||||||
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._redraw));
|
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._redraw));
|
||||||
@ -288,7 +261,15 @@ const Keyboard = new Lang.Class({
|
|||||||
|
|
||||||
// Showing an extended key popup and clicking a key from the extended keys
|
// Showing an extended key popup and clicking a key from the extended keys
|
||||||
// will grab focus, but ignore that
|
// will grab focus, but ignore that
|
||||||
if (focus && (focus._extended_keys || (focus._key && focus._key.extended_key)))
|
let extendedKeysWereFocused = this._focusInExtendedKeys;
|
||||||
|
this._focusInExtendedKeys = focus && (focus._extended_keys || focus.extended_key);
|
||||||
|
if (this._focusInExtendedKeys || extendedKeysWereFocused)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Ignore focus changes caused by message tray showing/hiding
|
||||||
|
let trayWasFocused = this._focusInTray;
|
||||||
|
this._focusInTray = (focus && Main.messageTray.actor.contains(focus));
|
||||||
|
if (this._focusInTray || trayWasFocused)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let time = global.get_current_time();
|
let time = global.get_current_time();
|
||||||
@ -339,6 +320,13 @@ const Keyboard = new Lang.Class({
|
|||||||
trayButton.reactive = true;
|
trayButton.reactive = true;
|
||||||
trayButton.remove_style_pseudo_class('grayed');
|
trayButton.remove_style_pseudo_class('grayed');
|
||||||
}));
|
}));
|
||||||
|
Main.sessionMode.connect('updated', Lang.bind(this, function() {
|
||||||
|
trayButton.reactive = !Main.sessionMode.isLocked;
|
||||||
|
if (Main.sessionMode.isLocked)
|
||||||
|
trayButton.add_style_pseudo_class('grayed');
|
||||||
|
else
|
||||||
|
trayButton.remove_style_pseudo_class('grayed');
|
||||||
|
}));
|
||||||
|
|
||||||
return trayButton;
|
return trayButton;
|
||||||
},
|
},
|
||||||
@ -468,6 +456,12 @@ const Keyboard = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
shouldTakeEvent: function(event) {
|
||||||
|
let actor = event.get_source();
|
||||||
|
return Main.layoutManager.keyboardBox.contains(actor) ||
|
||||||
|
actor._extended_keys || actor.extended_key;
|
||||||
|
},
|
||||||
|
|
||||||
show: function () {
|
show: function () {
|
||||||
this._redraw();
|
this._redraw();
|
||||||
|
|
||||||
@ -559,6 +553,7 @@ const KeyboardSource = new Lang.Class({
|
|||||||
_init: function(keyboard) {
|
_init: function(keyboard) {
|
||||||
this._keyboard = keyboard;
|
this._keyboard = keyboard;
|
||||||
this.parent(_("Keyboard"), 'input-keyboard-symbolic');
|
this.parent(_("Keyboard"), 'input-keyboard-symbolic');
|
||||||
|
this.keepTrayOnSummaryClick = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
handleSummaryClick: function() {
|
handleSummaryClick: function() {
|
||||||
|
@ -43,6 +43,8 @@ const MonitorConstraint = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
set primary(v) {
|
set primary(v) {
|
||||||
|
if (v)
|
||||||
|
this._index = -1;
|
||||||
this._primary = v;
|
this._primary = v;
|
||||||
if (this.actor)
|
if (this.actor)
|
||||||
this.actor.queue_relayout();
|
this.actor.queue_relayout();
|
||||||
@ -54,6 +56,7 @@ const MonitorConstraint = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
set index(v) {
|
set index(v) {
|
||||||
|
this._primary = false;
|
||||||
this._index = v;
|
this._index = v;
|
||||||
if (this.actor)
|
if (this.actor)
|
||||||
this.actor.queue_relayout();
|
this.actor.queue_relayout();
|
||||||
@ -101,7 +104,7 @@ const LayoutManager = new Lang.Class({
|
|||||||
this.primaryMonitor = null;
|
this.primaryMonitor = null;
|
||||||
this.primaryIndex = -1;
|
this.primaryIndex = -1;
|
||||||
this._hotCorners = [];
|
this._hotCorners = [];
|
||||||
this._rootPixmap = null;
|
this._background = null;
|
||||||
this._leftPanelBarrier = 0;
|
this._leftPanelBarrier = 0;
|
||||||
this._rightPanelBarrier = 0;
|
this._rightPanelBarrier = 0;
|
||||||
this._trayBarrier = 0;
|
this._trayBarrier = 0;
|
||||||
@ -125,8 +128,6 @@ const LayoutManager = new Lang.Class({
|
|||||||
this.trayBox = new St.Widget({ name: 'trayBox',
|
this.trayBox = new St.Widget({ name: 'trayBox',
|
||||||
layout_manager: new Clutter.BinLayout() });
|
layout_manager: new Clutter.BinLayout() });
|
||||||
this.addChrome(this.trayBox);
|
this.addChrome(this.trayBox);
|
||||||
this.trayBox.connect('allocation-changed',
|
|
||||||
Lang.bind(this, this._updateTrayBarrier));
|
|
||||||
|
|
||||||
this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox',
|
this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
@ -277,22 +278,6 @@ const LayoutManager = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateTrayBarrier: function() {
|
|
||||||
let monitor = this.bottomMonitor;
|
|
||||||
|
|
||||||
if (this._trayBarrier)
|
|
||||||
global.destroy_pointer_barrier(this._trayBarrier);
|
|
||||||
|
|
||||||
if (Main.messageTray) {
|
|
||||||
this._trayBarrier =
|
|
||||||
global.create_pointer_barrier(monitor.x + monitor.width, monitor.y + monitor.height - Main.messageTray.actor.height,
|
|
||||||
monitor.x + monitor.width, monitor.y + monitor.height,
|
|
||||||
4 /* BarrierNegativeX */);
|
|
||||||
} else {
|
|
||||||
this._trayBarrier = 0;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_monitorsChanged: function() {
|
_monitorsChanged: function() {
|
||||||
this._updateMonitors();
|
this._updateMonitors();
|
||||||
this._updateBoxes();
|
this._updateBoxes();
|
||||||
@ -330,30 +315,30 @@ const LayoutManager = new Lang.Class({
|
|||||||
// to the greeter. Otherwise, we'll just animate the panel,
|
// to the greeter. Otherwise, we'll just animate the panel,
|
||||||
// as usual.
|
// as usual.
|
||||||
if (Main.sessionMode.isGreeter) {
|
if (Main.sessionMode.isGreeter) {
|
||||||
this._rootPixmap = global.create_xrootpmap_texture();
|
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
|
||||||
if (this._rootPixmap != null) {
|
if (this._background != null) {
|
||||||
Main.uiGroup.add_actor(this._rootPixmap);
|
Main.uiGroup.add_actor(this._background);
|
||||||
Tweener.addTween(this._rootPixmap,
|
Tweener.addTween(this._background,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: PLYMOUTH_TRANSITION_TIME,
|
time: PLYMOUTH_TRANSITION_TIME,
|
||||||
transition: 'linear',
|
transition: 'linear',
|
||||||
onComplete: this._fadeRootpmapComplete,
|
onComplete: this._fadeBackgroundComplete,
|
||||||
onCompleteScope: this });
|
onCompleteScope: this });
|
||||||
plymouthTransitionRunning = true;
|
plymouthTransitionRunning = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!plymouthTransitionRunning)
|
if (!plymouthTransitionRunning)
|
||||||
this._fadeRootpmapComplete();
|
this._fadeBackgroundComplete();
|
||||||
},
|
},
|
||||||
|
|
||||||
_fadeRootpmapComplete: function() {
|
_fadeBackgroundComplete: function() {
|
||||||
// Don't animate the strut
|
// Don't animate the strut
|
||||||
this._chrome.freezeUpdateRegions();
|
this._chrome.freezeUpdateRegions();
|
||||||
|
|
||||||
if (this._rootPixmap != null) {
|
if (this._background != null) {
|
||||||
this._rootPixmap.destroy();
|
this._background.destroy();
|
||||||
this._rootPixmap = null;
|
this._background = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Tweener.addTween(this.panelBox,
|
Tweener.addTween(this.panelBox,
|
||||||
@ -370,7 +355,6 @@ const LayoutManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
showKeyboard: function () {
|
showKeyboard: function () {
|
||||||
Main.messageTray.hide();
|
|
||||||
this.keyboardBox.raise_top();
|
this.keyboardBox.raise_top();
|
||||||
Tweener.addTween(this.keyboardBox,
|
Tweener.addTween(this.keyboardBox,
|
||||||
{ anchor_y: this.keyboardBox.height,
|
{ anchor_y: this.keyboardBox.height,
|
||||||
@ -384,6 +368,8 @@ const LayoutManager = new Lang.Class({
|
|||||||
time: KEYBOARD_ANIMATION_TIME,
|
time: KEYBOARD_ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad'
|
transition: 'easeOutQuad'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.emit('keyboard-visible-changed', true);
|
||||||
},
|
},
|
||||||
|
|
||||||
_showKeyboardComplete: function() {
|
_showKeyboardComplete: function() {
|
||||||
@ -398,7 +384,6 @@ const LayoutManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
hideKeyboard: function (immediate) {
|
hideKeyboard: function (immediate) {
|
||||||
Main.messageTray.hide();
|
|
||||||
if (this._keyboardHeightNotifyId) {
|
if (this._keyboardHeightNotifyId) {
|
||||||
this.keyboardBox.disconnect(this._keyboardHeightNotifyId);
|
this.keyboardBox.disconnect(this._keyboardHeightNotifyId);
|
||||||
this._keyboardHeightNotifyId = 0;
|
this._keyboardHeightNotifyId = 0;
|
||||||
@ -415,6 +400,8 @@ const LayoutManager = new Lang.Class({
|
|||||||
time: immediate ? 0 : KEYBOARD_ANIMATION_TIME,
|
time: immediate ? 0 : KEYBOARD_ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad'
|
transition: 'easeOutQuad'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.emit('keyboard-visible-changed', false);
|
||||||
},
|
},
|
||||||
|
|
||||||
_hideKeyboardComplete: function() {
|
_hideKeyboardComplete: function() {
|
||||||
@ -779,10 +766,13 @@ const Chrome = new Lang.Class({
|
|||||||
|
|
||||||
_actorReparented: function(actor, oldParent) {
|
_actorReparented: function(actor, oldParent) {
|
||||||
let newParent = actor.get_parent();
|
let newParent = actor.get_parent();
|
||||||
if (!newParent)
|
if (!newParent) {
|
||||||
this._untrackActor(actor);
|
this._untrackActor(actor);
|
||||||
else
|
} else {
|
||||||
|
let i = this._findActor(actor);
|
||||||
|
let actorData = this._trackedActors[i];
|
||||||
actorData.isToplevel = (newParent == Main.uiGroup);
|
actorData.isToplevel = (newParent == Main.uiGroup);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateVisibility: function() {
|
_updateVisibility: function() {
|
||||||
|
@ -1129,7 +1129,7 @@ const LookingGlass = new Lang.Class({
|
|||||||
if (this._open)
|
if (this._open)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Main.pushModal(this._entry))
|
if (!Main.pushModal(this._entry, { keybindingMode: Main.KeybindingMode.LOOKING_GLASS }))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._notebook.selectIndex(0);
|
this._notebook.selectIndex(0);
|
||||||
|
138
js/ui/main.js
138
js/ui/main.js
@ -20,6 +20,7 @@ const Keyboard = imports.ui.keyboard;
|
|||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
const Overview = imports.ui.overview;
|
const Overview = imports.ui.overview;
|
||||||
const Panel = imports.ui.panel;
|
const Panel = imports.ui.panel;
|
||||||
|
const Params = imports.misc.params;
|
||||||
const RunDialog = imports.ui.runDialog;
|
const RunDialog = imports.ui.runDialog;
|
||||||
const Layout = imports.ui.layout;
|
const Layout = imports.ui.layout;
|
||||||
const LookingGlass = imports.ui.lookingGlass;
|
const LookingGlass = imports.ui.lookingGlass;
|
||||||
@ -39,6 +40,18 @@ const Util = imports.misc.util;
|
|||||||
const OVERRIDES_SCHEMA = 'org.gnome.shell.overrides';
|
const OVERRIDES_SCHEMA = 'org.gnome.shell.overrides';
|
||||||
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
||||||
|
|
||||||
|
const KeybindingMode = {
|
||||||
|
NONE: 0, // block all keybindings
|
||||||
|
NORMAL: 1 << 0, // window mode
|
||||||
|
OVERVIEW: 1 << 1,
|
||||||
|
LOCK_SCREEN: 1 << 2,
|
||||||
|
UNLOCK_SCREEN: 1 << 3,
|
||||||
|
LOGIN_SCREEN: 1 << 4,
|
||||||
|
MESSAGE_TRAY: 1 << 5,
|
||||||
|
SYSTEM_MODAL: 1 << 6,
|
||||||
|
LOOKING_GLASS: 1 << 7
|
||||||
|
};
|
||||||
|
|
||||||
let componentManager = null;
|
let componentManager = null;
|
||||||
let panel = null;
|
let panel = null;
|
||||||
let overview = null;
|
let overview = null;
|
||||||
@ -55,6 +68,7 @@ let shellDBusService = null;
|
|||||||
let shellMountOpDBusService = null;
|
let shellMountOpDBusService = null;
|
||||||
let screenSaverDBus = null;
|
let screenSaverDBus = null;
|
||||||
let modalCount = 0;
|
let modalCount = 0;
|
||||||
|
let keybindingMode = KeybindingMode.NORMAL;
|
||||||
let modalActorFocusStack = [];
|
let modalActorFocusStack = [];
|
||||||
let uiGroup = null;
|
let uiGroup = null;
|
||||||
let magnifier = null;
|
let magnifier = null;
|
||||||
@ -69,7 +83,17 @@ let _overridesSettings = null;
|
|||||||
let background = null;
|
let background = null;
|
||||||
|
|
||||||
function _sessionUpdated() {
|
function _sessionUpdated() {
|
||||||
Meta.keybindings_set_custom_handler('panel-run-dialog', sessionMode.hasRunDialog ? openRunDialog : null);
|
wm.setCustomKeybindingHandler('panel-main-menu',
|
||||||
|
KeybindingMode.NORMAL |
|
||||||
|
KeybindingMode.OVERVIEW,
|
||||||
|
sessionMode.hasOverview ? Lang.bind(overview, overview.toggle) : null);
|
||||||
|
wm.allowKeybinding('overlay-key', KeybindingMode.NORMAL |
|
||||||
|
KeybindingMode.OVERVIEW);
|
||||||
|
|
||||||
|
wm.setCustomKeybindingHandler('panel-run-dialog',
|
||||||
|
KeybindingMode.NORMAL |
|
||||||
|
KeybindingMode.OVERVIEW,
|
||||||
|
sessionMode.hasRunDialog ? openRunDialog : null);
|
||||||
if (sessionMode.isGreeter)
|
if (sessionMode.isGreeter)
|
||||||
screenShield.showDialog();
|
screenShield.showDialog();
|
||||||
}
|
}
|
||||||
@ -155,9 +179,7 @@ function start() {
|
|||||||
|
|
||||||
global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
|
global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
|
||||||
false, -1, 1);
|
false, -1, 1);
|
||||||
Meta.keybindings_set_custom_handler('panel-main-menu', Lang.bind(overview, overview.toggle));
|
|
||||||
global.display.connect('overlay-key', Lang.bind(overview, overview.toggle));
|
global.display.connect('overlay-key', Lang.bind(overview, overview.toggle));
|
||||||
|
|
||||||
sessionMode.connect('update', _sessionUpdated);
|
sessionMode.connect('update', _sessionUpdated);
|
||||||
_sessionUpdated();
|
_sessionUpdated();
|
||||||
|
|
||||||
@ -167,8 +189,6 @@ function start() {
|
|||||||
|
|
||||||
_startDate = new Date();
|
_startDate = new Date();
|
||||||
|
|
||||||
global.stage.connect('captured-event', _globalKeyPressHandler);
|
|
||||||
|
|
||||||
log('GNOME Shell started at ' + _startDate);
|
log('GNOME Shell started at ' + _startDate);
|
||||||
|
|
||||||
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
||||||
@ -465,80 +485,6 @@ function getWindowActorsForWorkspace(workspaceIndex) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function encapsulates hacks to make certain global keybindings
|
|
||||||
// work even when we are in one of our modes where global keybindings
|
|
||||||
// are disabled with a global grab. (When there is a global grab, then
|
|
||||||
// all key events will be delivered to the stage, so ::captured-event
|
|
||||||
// on the stage can be used for global keybindings.)
|
|
||||||
function _globalKeyPressHandler(actor, event) {
|
|
||||||
if (modalCount == 0)
|
|
||||||
return false;
|
|
||||||
if (event.type() != Clutter.EventType.KEY_PRESS)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!sessionMode.allowKeybindingsWhenModal) {
|
|
||||||
if (modalCount > (overview.visible ? 1 : 0))
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
let symbol = event.get_key_symbol();
|
|
||||||
let keyCode = event.get_key_code();
|
|
||||||
let ignoredModifiers = global.display.get_ignored_modifier_mask();
|
|
||||||
let modifierState = event.get_state() & ~ignoredModifiers;
|
|
||||||
|
|
||||||
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
|
|
||||||
let action = global.display.get_keybinding_action(keyCode, modifierState);
|
|
||||||
|
|
||||||
if (action == Meta.KeyBindingAction.SWITCH_PANELS) {
|
|
||||||
ctrlAltTabManager.popup(modifierState & Clutter.ModifierType.SHIFT_MASK,
|
|
||||||
modifierState);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (action) {
|
|
||||||
// left/right would effectively act as synonyms for up/down if we enabled them;
|
|
||||||
// but that could be considered confusing; we also disable them in the main view.
|
|
||||||
//
|
|
||||||
// case Meta.KeyBindingAction.WORKSPACE_LEFT:
|
|
||||||
// if (!sessionMode.hasWorkspaces)
|
|
||||||
// return false;
|
|
||||||
//
|
|
||||||
// wm.actionMoveWorkspaceLeft();
|
|
||||||
// return true;
|
|
||||||
// case Meta.KeyBindingAction.WORKSPACE_RIGHT:
|
|
||||||
// if (!sessionMode.hasWorkspaces)
|
|
||||||
// return false;
|
|
||||||
//
|
|
||||||
// wm.actionMoveWorkspaceRight();
|
|
||||||
// return true;
|
|
||||||
case Meta.KeyBindingAction.WORKSPACE_UP:
|
|
||||||
if (!sessionMode.hasWorkspaces)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
wm.actionMoveWorkspace(Meta.MotionDirection.UP);
|
|
||||||
return true;
|
|
||||||
case Meta.KeyBindingAction.WORKSPACE_DOWN:
|
|
||||||
if (!sessionMode.hasWorkspaces)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
wm.actionMoveWorkspace(Meta.MotionDirection.DOWN);
|
|
||||||
return true;
|
|
||||||
case Meta.KeyBindingAction.PANEL_RUN_DIALOG:
|
|
||||||
case Meta.KeyBindingAction.COMMAND_2:
|
|
||||||
if (!sessionMode.hasRunDialog)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
openRunDialog();
|
|
||||||
return true;
|
|
||||||
case Meta.KeyBindingAction.PANEL_MAIN_MENU:
|
|
||||||
case Meta.KeyBindingAction.OVERLAY_KEY:
|
|
||||||
overview.hide();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _findModal(actor) {
|
function _findModal(actor) {
|
||||||
for (let i = 0; i < modalActorFocusStack.length; i++) {
|
for (let i = 0; i < modalActorFocusStack.length; i++) {
|
||||||
if (modalActorFocusStack[i].actor == actor)
|
if (modalActorFocusStack[i].actor == actor)
|
||||||
@ -554,7 +500,7 @@ function isInModalStack(actor) {
|
|||||||
/**
|
/**
|
||||||
* pushModal:
|
* pushModal:
|
||||||
* @actor: #ClutterActor which will be given keyboard focus
|
* @actor: #ClutterActor which will be given keyboard focus
|
||||||
* @timestamp: optional timestamp
|
* @params: optional parameters
|
||||||
*
|
*
|
||||||
* Ensure we are in a mode where all keyboard and mouse input goes to
|
* Ensure we are in a mode where all keyboard and mouse input goes to
|
||||||
* the stage, and focus @actor. Multiple calls to this function act in
|
* the stage, and focus @actor. Multiple calls to this function act in
|
||||||
@ -565,21 +511,27 @@ function isInModalStack(actor) {
|
|||||||
* modal stack returns to this actor, reset the focus to the actor
|
* modal stack returns to this actor, reset the focus to the actor
|
||||||
* which was focused at the time pushModal() was invoked.
|
* which was focused at the time pushModal() was invoked.
|
||||||
*
|
*
|
||||||
* @timestamp is optionally used to associate the call with a specific user
|
* @params may be used to provide the following parameters:
|
||||||
* initiated event. If not provided then the value of
|
* - timestamp: used to associate the call with a specific user initiated
|
||||||
* global.get_current_time() is assumed.
|
* event. If not provided then the value of
|
||||||
|
* global.get_current_time() is assumed.
|
||||||
*
|
*
|
||||||
* @options: optional Meta.ModalOptions flags to indicate that the
|
* - options: Meta.ModalOptions flags to indicate that the pointer is
|
||||||
* pointer is alrady grabbed
|
* already grabbed
|
||||||
|
*
|
||||||
|
* - keybindingMode: used to set the current Main.KeybindingMode to filter
|
||||||
|
* global keybindings; the default of NONE will filter
|
||||||
|
* out all keybindings
|
||||||
*
|
*
|
||||||
* Returns: true iff we successfully acquired a grab or already had one
|
* Returns: true iff we successfully acquired a grab or already had one
|
||||||
*/
|
*/
|
||||||
function pushModal(actor, timestamp, options) {
|
function pushModal(actor, params) {
|
||||||
if (timestamp == undefined)
|
params = Params.parse(params, { timestamp: global.get_current_time(),
|
||||||
timestamp = global.get_current_time();
|
options: 0,
|
||||||
|
keybindingMode: KeybindingMode.NONE });
|
||||||
|
|
||||||
if (modalCount == 0) {
|
if (modalCount == 0) {
|
||||||
if (!global.begin_modal(timestamp, options ? options : 0)) {
|
if (!global.begin_modal(params.timestamp, params.options)) {
|
||||||
log('pushModal: invocation of begin_modal failed');
|
log('pushModal: invocation of begin_modal failed');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -606,8 +558,10 @@ function pushModal(actor, timestamp, options) {
|
|||||||
modalActorFocusStack.push({ actor: actor,
|
modalActorFocusStack.push({ actor: actor,
|
||||||
focus: curFocus,
|
focus: curFocus,
|
||||||
destroyId: actorDestroyId,
|
destroyId: actorDestroyId,
|
||||||
focusDestroyId: curFocusDestroyId });
|
focusDestroyId: curFocusDestroyId,
|
||||||
|
keybindingMode: keybindingMode });
|
||||||
|
|
||||||
|
keybindingMode = params.keybindingMode;
|
||||||
global.stage.set_key_focus(actor);
|
global.stage.set_key_focus(actor);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -634,6 +588,7 @@ function popModal(actor, timestamp) {
|
|||||||
global.stage.set_key_focus(null);
|
global.stage.set_key_focus(null);
|
||||||
global.end_modal(timestamp);
|
global.end_modal(timestamp);
|
||||||
global.set_stage_input_mode(Shell.StageInputMode.NORMAL);
|
global.set_stage_input_mode(Shell.StageInputMode.NORMAL);
|
||||||
|
keybindingMode = KeybindingMode.NORMAL;
|
||||||
|
|
||||||
throw new Error('incorrect pop');
|
throw new Error('incorrect pop');
|
||||||
}
|
}
|
||||||
@ -646,6 +601,7 @@ function popModal(actor, timestamp) {
|
|||||||
if (focusIndex == modalActorFocusStack.length - 1) {
|
if (focusIndex == modalActorFocusStack.length - 1) {
|
||||||
if (record.focus)
|
if (record.focus)
|
||||||
record.focus.disconnect(record.focusDestroyId);
|
record.focus.disconnect(record.focusDestroyId);
|
||||||
|
keybindingMode = record.keybindingMode;
|
||||||
global.stage.set_key_focus(record.focus);
|
global.stage.set_key_focus(record.focus);
|
||||||
} else {
|
} else {
|
||||||
let t = modalActorFocusStack[modalActorFocusStack.length - 1];
|
let t = modalActorFocusStack[modalActorFocusStack.length - 1];
|
||||||
@ -655,6 +611,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].focus = modalActorFocusStack[i - 1].focus;
|
modalActorFocusStack[i].focus = modalActorFocusStack[i - 1].focus;
|
||||||
modalActorFocusStack[i].focusDestroyId = modalActorFocusStack[i - 1].focusDestroyId;
|
modalActorFocusStack[i].focusDestroyId = modalActorFocusStack[i - 1].focusDestroyId;
|
||||||
|
modalActorFocusStack[i].keybindingMode = modalActorFocusStack[i - 1].keybindingMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
modalActorFocusStack.splice(focusIndex, 1);
|
modalActorFocusStack.splice(focusIndex, 1);
|
||||||
@ -665,6 +622,7 @@ function popModal(actor, timestamp) {
|
|||||||
global.end_modal(timestamp);
|
global.end_modal(timestamp);
|
||||||
global.set_stage_input_mode(Shell.StageInputMode.NORMAL);
|
global.set_stage_input_mode(Shell.StageInputMode.NORMAL);
|
||||||
Meta.enable_unredirect_for_screen(global.screen);
|
Meta.enable_unredirect_for_screen(global.screen);
|
||||||
|
keybindingMode = KeybindingMode.NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createLookingGlass() {
|
function createLookingGlass() {
|
||||||
|
@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
|
|||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||||
const Atk = imports.gi.Atk;
|
const Atk = imports.gi.Atk;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
@ -35,8 +36,6 @@ const LONGER_SUMMARY_TIMEOUT = 4;
|
|||||||
const HIDE_TIMEOUT = 0.2;
|
const HIDE_TIMEOUT = 0.2;
|
||||||
const LONGER_HIDE_TIMEOUT = 0.6;
|
const LONGER_HIDE_TIMEOUT = 0.6;
|
||||||
|
|
||||||
const NOTIFICATION_ICON_SIZE = 24;
|
|
||||||
|
|
||||||
// We delay hiding of the tray if the mouse is within MOUSE_LEFT_ACTOR_THRESHOLD
|
// We delay hiding of the tray if the mouse is within MOUSE_LEFT_ACTOR_THRESHOLD
|
||||||
// range from the point where it left the tray.
|
// range from the point where it left the tray.
|
||||||
const MOUSE_LEFT_ACTOR_THRESHOLD = 20;
|
const MOUSE_LEFT_ACTOR_THRESHOLD = 20;
|
||||||
@ -143,14 +142,9 @@ const URLHighlighter = new Lang.Class({
|
|||||||
let url = this._urls[urlId].url;
|
let url = this._urls[urlId].url;
|
||||||
if (url.indexOf(':') == -1)
|
if (url.indexOf(':') == -1)
|
||||||
url = 'http://' + url;
|
url = 'http://' + url;
|
||||||
try {
|
|
||||||
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
|
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
|
||||||
// TODO: remove this after gnome 3 release
|
|
||||||
Util.spawn(['gvfs-open', url]);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
@ -243,9 +237,7 @@ function makeCloseButton() {
|
|||||||
closeButton.connect('style-changed', function() {
|
closeButton.connect('style-changed', function() {
|
||||||
let themeNode = closeButton.get_theme_node();
|
let themeNode = closeButton.get_theme_node();
|
||||||
closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
|
closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
|
||||||
|
closeButton.translation_y = themeNode.get_length('-shell-close-overlap-y');
|
||||||
// libcroco doesn't support negative units
|
|
||||||
closeButton.translation_y = -themeNode.get_length('-shell-close-overlap-y');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return closeButton;
|
return closeButton;
|
||||||
@ -291,9 +283,12 @@ function makeCloseButton() {
|
|||||||
// If @params contains a 'body' parameter, then that text will be added to
|
// If @params contains a 'body' parameter, then that text will be added to
|
||||||
// the content area (as with addBody()).
|
// the content area (as with addBody()).
|
||||||
//
|
//
|
||||||
// By default, the icon shown is created by calling
|
// By default, the icon shown is the same as the source's.
|
||||||
// source.createIcon(). However, if @params contains an 'icon'
|
// However, if @params contains a 'gicon' parameter, the passed in gicon
|
||||||
// parameter, the passed in icon will be used.
|
// will be used.
|
||||||
|
//
|
||||||
|
// You can add a secondary icon to the banner with 'secondaryGIcon'. There
|
||||||
|
// is no fallback for this icon.
|
||||||
//
|
//
|
||||||
// If @params contains a 'titleMarkup', 'bannerMarkup', or
|
// If @params contains a 'titleMarkup', 'bannerMarkup', or
|
||||||
// 'bodyMarkup' parameter with the value %true, then the corresponding
|
// 'bodyMarkup' parameter with the value %true, then the corresponding
|
||||||
@ -308,6 +303,8 @@ function makeCloseButton() {
|
|||||||
const Notification = new Lang.Class({
|
const Notification = new Lang.Class({
|
||||||
Name: 'Notification',
|
Name: 'Notification',
|
||||||
|
|
||||||
|
ICON_SIZE: 24,
|
||||||
|
|
||||||
IMAGE_SIZE: 125,
|
IMAGE_SIZE: 125,
|
||||||
|
|
||||||
_init: function(source, title, banner, params) {
|
_init: function(source, title, banner, params) {
|
||||||
@ -317,6 +314,7 @@ const Notification = new Lang.Class({
|
|||||||
this.resident = false;
|
this.resident = false;
|
||||||
// 'transient' is a reserved keyword in JS, so we have to use an alternate variable name
|
// 'transient' is a reserved keyword in JS, so we have to use an alternate variable name
|
||||||
this.isTransient = false;
|
this.isTransient = false;
|
||||||
|
this.forFeedback = false;
|
||||||
this.expanded = false;
|
this.expanded = false;
|
||||||
this.focused = false;
|
this.focused = false;
|
||||||
this.acknowledged = false;
|
this.acknowledged = false;
|
||||||
@ -391,8 +389,8 @@ const Notification = new Lang.Class({
|
|||||||
update: function(title, banner, params) {
|
update: function(title, banner, params) {
|
||||||
params = Params.parse(params, { customContent: false,
|
params = Params.parse(params, { customContent: false,
|
||||||
body: null,
|
body: null,
|
||||||
icon: null,
|
gicon: null,
|
||||||
secondaryIcon: null,
|
secondaryGIcon: null,
|
||||||
titleMarkup: false,
|
titleMarkup: false,
|
||||||
bannerMarkup: false,
|
bannerMarkup: false,
|
||||||
bodyMarkup: false,
|
bodyMarkup: false,
|
||||||
@ -402,12 +400,12 @@ const Notification = new Lang.Class({
|
|||||||
|
|
||||||
let oldFocus = global.stage.key_focus;
|
let oldFocus = global.stage.key_focus;
|
||||||
|
|
||||||
if (this._icon && (params.icon || params.clear)) {
|
if (this._icon && (params.gicon || params.clear)) {
|
||||||
this._icon.destroy();
|
this._icon.destroy();
|
||||||
this._icon = null;
|
this._icon = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._secondaryIcon && (params.secondaryIcon || params.clear)) {
|
if (this._secondaryIcon && (params.secondaryGIcon || params.clear)) {
|
||||||
this._secondaryIcon.destroy();
|
this._secondaryIcon.destroy();
|
||||||
this._secondaryIcon = null;
|
this._secondaryIcon = null;
|
||||||
}
|
}
|
||||||
@ -437,8 +435,14 @@ const Notification = new Lang.Class({
|
|||||||
if (!this._scrollArea && !this._actionArea && !this._imageBin)
|
if (!this._scrollArea && !this._actionArea && !this._imageBin)
|
||||||
this._table.remove_style_class_name('multi-line-notification');
|
this._table.remove_style_class_name('multi-line-notification');
|
||||||
|
|
||||||
if (!this._icon) {
|
if (params.gicon) {
|
||||||
this._icon = params.icon || this.source.createIcon(NOTIFICATION_ICON_SIZE);
|
this._icon = new St.Icon({ gicon: params.gicon,
|
||||||
|
icon_size: this.ICON_SIZE });
|
||||||
|
} else {
|
||||||
|
this._icon = this.source.createIcon(this.ICON_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._icon) {
|
||||||
this._table.add(this._icon, { row: 0,
|
this._table.add(this._icon, { row: 0,
|
||||||
col: 0,
|
col: 0,
|
||||||
x_expand: false,
|
x_expand: false,
|
||||||
@ -447,11 +451,10 @@ const Notification = new Lang.Class({
|
|||||||
y_align: St.Align.START });
|
y_align: St.Align.START });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this._secondaryIcon) {
|
if (params.secondaryGIcon) {
|
||||||
this._secondaryIcon = params.secondaryIcon;
|
this._secondaryIcon = new St.Icon({ gicon: params.secondaryGIcon,
|
||||||
|
style_class: 'secondary-icon' });
|
||||||
if (this._secondaryIcon)
|
this._bannerBox.add_actor(this._secondaryIcon);
|
||||||
this._bannerBox.add_actor(this._secondaryIcon);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.title = title;
|
this.title = title;
|
||||||
@ -711,6 +714,10 @@ const Notification = new Lang.Class({
|
|||||||
this.isTransient = isTransient;
|
this.isTransient = isTransient;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setForFeedback: function(forFeedback) {
|
||||||
|
this.forFeedback = forFeedback;
|
||||||
|
},
|
||||||
|
|
||||||
setUseActionIcons: function(useIcons) {
|
setUseActionIcons: function(useIcons) {
|
||||||
this._useActionIcons = useIcons;
|
this._useActionIcons = useIcons;
|
||||||
},
|
},
|
||||||
@ -1052,6 +1059,7 @@ const Source = new Lang.Class({
|
|||||||
this.isChat = false;
|
this.isChat = false;
|
||||||
this.isMuted = false;
|
this.isMuted = false;
|
||||||
this.showInLockScreen = true;
|
this.showInLockScreen = true;
|
||||||
|
this.keepTrayOnSummaryClick = false;
|
||||||
|
|
||||||
this.notifications = [];
|
this.notifications = [];
|
||||||
},
|
},
|
||||||
@ -1113,10 +1121,14 @@ const Source = new Lang.Class({
|
|||||||
// Provides a sane default implementation, override if you need
|
// Provides a sane default implementation, override if you need
|
||||||
// something more fancy.
|
// something more fancy.
|
||||||
createIcon: function(size) {
|
createIcon: function(size) {
|
||||||
return new St.Icon({ icon_name: this.iconName,
|
return new St.Icon({ gicon: this.getIcon(),
|
||||||
icon_size: size });
|
icon_size: size });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getIcon: function() {
|
||||||
|
return new Gio.ThemedIcon({ name: this.iconName });
|
||||||
|
},
|
||||||
|
|
||||||
_ensureMainIcon: function() {
|
_ensureMainIcon: function() {
|
||||||
if (this._mainIcon)
|
if (this._mainIcon)
|
||||||
return;
|
return;
|
||||||
@ -1230,12 +1242,6 @@ const SummaryItem = new Lang.Class({
|
|||||||
|
|
||||||
this.notificationStackWidget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
this.notificationStackWidget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||||
|
|
||||||
this._closeButton = makeCloseButton();
|
|
||||||
this._closeButton.connect('clicked', Lang.bind(this, function() {
|
|
||||||
source.destroy();
|
|
||||||
source.emit('done-displaying-content');
|
|
||||||
}));
|
|
||||||
|
|
||||||
this.notificationStackView = new St.ScrollView({ style_class: source.isChat ? '' : 'summary-notification-stack-scrollview',
|
this.notificationStackView = new St.ScrollView({ style_class: source.isChat ? '' : 'summary-notification-stack-scrollview',
|
||||||
vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC,
|
vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC,
|
||||||
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
||||||
@ -1244,7 +1250,9 @@ const SummaryItem = new Lang.Class({
|
|||||||
vertical: true });
|
vertical: true });
|
||||||
this.notificationStackView.add_actor(this.notificationStack);
|
this.notificationStackView.add_actor(this.notificationStack);
|
||||||
this.notificationStackWidget.add_actor(this.notificationStackView);
|
this.notificationStackWidget.add_actor(this.notificationStackView);
|
||||||
this.notificationStackWidget.add_actor(this._closeButton);
|
|
||||||
|
this.closeButton = makeCloseButton();
|
||||||
|
this.notificationStackWidget.add_actor(this.closeButton);
|
||||||
this._stackedNotifications = [];
|
this._stackedNotifications = [];
|
||||||
|
|
||||||
this._oldMaxScrollAdjustment = 0;
|
this._oldMaxScrollAdjustment = 0;
|
||||||
@ -1261,14 +1269,6 @@ const SummaryItem = new Lang.Class({
|
|||||||
global.focus_manager.add_group(this.rightClickMenu);
|
global.focus_manager.add_group(this.rightClickMenu);
|
||||||
},
|
},
|
||||||
|
|
||||||
get closeButtonVisible() {
|
|
||||||
return this._closeButton.visible;
|
|
||||||
},
|
|
||||||
|
|
||||||
set closeButtonVisible(v) {
|
|
||||||
this._closeButton.visible = v;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onKeyPress: function(actor, event) {
|
_onKeyPress: function(actor, event) {
|
||||||
if (event.get_key_symbol() == Clutter.KEY_Up) {
|
if (event.get_key_symbol() == Clutter.KEY_Up) {
|
||||||
actor.emit('clicked', 1);
|
actor.emit('clicked', 1);
|
||||||
@ -1394,6 +1394,8 @@ const MessageTray = new Lang.Class({
|
|||||||
y_expand: true,
|
y_expand: true,
|
||||||
x_expand: true,
|
x_expand: true,
|
||||||
layout_manager: new Clutter.BinLayout() });
|
layout_manager: new Clutter.BinLayout() });
|
||||||
|
this._notificationWidget.connect('key-release-event', Lang.bind(this, this._onNotificationKeyRelease));
|
||||||
|
|
||||||
this.actor.add_actor(this._notificationWidget);
|
this.actor.add_actor(this._notificationWidget);
|
||||||
|
|
||||||
this._notificationBin = new St.Bin({ y_expand: true });
|
this._notificationBin = new St.Bin({ y_expand: true });
|
||||||
@ -1443,21 +1445,23 @@ const MessageTray = new Lang.Class({
|
|||||||
|
|
||||||
this._closeButton = makeCloseButton();
|
this._closeButton = makeCloseButton();
|
||||||
this._closeButton.hide();
|
this._closeButton.hide();
|
||||||
this._closeButton.connect('clicked', Lang.bind(this, this._onCloseClicked));
|
this._closeButton.connect('clicked', Lang.bind(this, this._closeNotification));
|
||||||
this._notificationWidget.add_actor(this._closeButton);
|
this._notificationWidget.add_actor(this._closeButton);
|
||||||
|
|
||||||
this._idleMonitorWatchId = 0;
|
this._idleMonitorBecameActiveId = 0;
|
||||||
this._userActiveWhileNotificationShown = false;
|
this._userActiveWhileNotificationShown = false;
|
||||||
|
|
||||||
this.idleMonitor = Shell.IdleMonitor.get();
|
this.idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||||
|
|
||||||
this._grabHelper = new GrabHelper.GrabHelper(this.actor);
|
this._grabHelper = new GrabHelper.GrabHelper(this.actor,
|
||||||
|
{ keybindingMode: Main.KeybindingMode.MESSAGE_TRAY });
|
||||||
this._grabHelper.addActor(this._summaryBoxPointer.actor);
|
this._grabHelper.addActor(this._summaryBoxPointer.actor);
|
||||||
this._grabHelper.addActor(this.actor);
|
this._grabHelper.addActor(this.actor);
|
||||||
if (Main.panel.statusArea.activities)
|
if (Main.panel.statusArea.activities)
|
||||||
this._grabHelper.addActor(Main.panel.statusArea.activities.hotCorner.actor);
|
this._grabHelper.addActor(Main.panel.statusArea.activities.hotCorner.actor);
|
||||||
|
|
||||||
Main.layoutManager.keyboardBox.connect('notify::hover', Lang.bind(this, this._onKeyboardHoverChanged));
|
Main.layoutManager.keyboardBox.connect('notify::hover', Lang.bind(this, this._onKeyboardHoverChanged));
|
||||||
|
Main.layoutManager.connect('keyboard-visible-changed', Lang.bind(this, this._onKeyboardVisibleChanged));
|
||||||
|
|
||||||
this._trayState = State.HIDDEN;
|
this._trayState = State.HIDDEN;
|
||||||
this._locked = false;
|
this._locked = false;
|
||||||
@ -1466,6 +1470,7 @@ const MessageTray = new Lang.Class({
|
|||||||
this._trayLeftTimeoutId = 0;
|
this._trayLeftTimeoutId = 0;
|
||||||
this._pointerInTray = false;
|
this._pointerInTray = false;
|
||||||
this._pointerInKeyboard = false;
|
this._pointerInKeyboard = false;
|
||||||
|
this._keyboardVisible = false;
|
||||||
this._summaryState = State.HIDDEN;
|
this._summaryState = State.HIDDEN;
|
||||||
this._pointerInSummary = false;
|
this._pointerInSummary = false;
|
||||||
this._notificationClosed = false;
|
this._notificationClosed = false;
|
||||||
@ -1474,6 +1479,7 @@ const MessageTray = new Lang.Class({
|
|||||||
this._notificationExpandedId = 0;
|
this._notificationExpandedId = 0;
|
||||||
this._summaryBoxPointerState = State.HIDDEN;
|
this._summaryBoxPointerState = State.HIDDEN;
|
||||||
this._summaryBoxPointerTimeoutId = 0;
|
this._summaryBoxPointerTimeoutId = 0;
|
||||||
|
this._desktopCloneState = State.HIDDEN;
|
||||||
this._overviewVisible = Main.overview.visible;
|
this._overviewVisible = Main.overview.visible;
|
||||||
this._notificationRemoved = false;
|
this._notificationRemoved = false;
|
||||||
this._reNotifyAfterHideNotification = null;
|
this._reNotifyAfterHideNotification = null;
|
||||||
@ -1510,12 +1516,22 @@ const MessageTray = new Lang.Class({
|
|||||||
this._updateState();
|
this._updateState();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
Main.sessionMode.connect('updated', Lang.bind(this, this._updateState));
|
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||||
|
|
||||||
global.display.add_keybinding('toggle-message-tray',
|
Main.wm.addKeybinding('toggle-message-tray',
|
||||||
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
Meta.KeyBindingFlags.NONE,
|
Meta.KeyBindingFlags.NONE,
|
||||||
Lang.bind(this, this.toggleAndNavigate));
|
Main.KeybindingMode.NORMAL |
|
||||||
|
Main.KeybindingMode.MESSAGE_TRAY |
|
||||||
|
Main.KeybindingMode.OVERVIEW,
|
||||||
|
Lang.bind(this, this.toggleAndNavigate));
|
||||||
|
Main.wm.addKeybinding('focus-active-notification',
|
||||||
|
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
|
Meta.KeyBindingFlags.NONE,
|
||||||
|
Main.KeybindingMode.NORMAL |
|
||||||
|
Main.KeybindingMode.MESSAGE_TRAY |
|
||||||
|
Main.KeybindingMode.OVERVIEW,
|
||||||
|
Lang.bind(this, this._expandActiveNotification));
|
||||||
|
|
||||||
this._summaryItems = [];
|
this._summaryItems = [];
|
||||||
this._chatSummaryItemsCount = 0;
|
this._chatSummaryItemsCount = 0;
|
||||||
@ -1525,6 +1541,18 @@ const MessageTray = new Lang.Class({
|
|||||||
this._trayDwellTimeoutId = 0;
|
this._trayDwellTimeoutId = 0;
|
||||||
this._trayDwelling = false;
|
this._trayDwelling = false;
|
||||||
this._trayDwellUserTime = 0;
|
this._trayDwellUserTime = 0;
|
||||||
|
|
||||||
|
this._sessionUpdated();
|
||||||
|
},
|
||||||
|
|
||||||
|
_sessionUpdated: function() {
|
||||||
|
if (Main.sessionMode.isLocked || Main.sessionMode.isGreeter)
|
||||||
|
Main.ctrlAltTabManager.removeGroup(this._summary);
|
||||||
|
else
|
||||||
|
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'start-here-symbolic',
|
||||||
|
{ focusCallback: Lang.bind(this, this.toggleAndNavigate),
|
||||||
|
sortGroup: CtrlAltTab.SortGroup.BOTTOM });
|
||||||
|
this._updateState();
|
||||||
},
|
},
|
||||||
|
|
||||||
_checkTrayDwell: function(x, y) {
|
_checkTrayDwell: function(x, y) {
|
||||||
@ -1561,6 +1589,9 @@ const MessageTray = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_trayDwellTimeout: function() {
|
_trayDwellTimeout: function() {
|
||||||
|
if (Main.modalCount > 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
// If the user interacted with the focus window since we started the tray
|
// If the user interacted with the focus window since we started the tray
|
||||||
// dwell (by clicking or typing), don't activate the message tray
|
// dwell (by clicking or typing), don't activate the message tray
|
||||||
let focusWindow = global.display.focus_window;
|
let focusWindow = global.display.focus_window;
|
||||||
@ -1576,14 +1607,23 @@ const MessageTray = new Lang.Class({
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onCloseClicked: function() {
|
_onNotificationKeyRelease: function(actor, event) {
|
||||||
|
let ignoredModifiers = global.display.get_ignored_modifier_mask();
|
||||||
|
let modifierState = event.get_state() & ~ignoredModifiers;
|
||||||
|
|
||||||
|
if (event.get_key_symbol() == Clutter.KEY_Escape && modifierState == 0) {
|
||||||
|
this._closeNotification();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_closeNotification: function() {
|
||||||
if (this._notificationState == State.SHOWN) {
|
if (this._notificationState == State.SHOWN) {
|
||||||
|
this._closeButton.hide();
|
||||||
this._notificationClosed = true;
|
this._notificationClosed = true;
|
||||||
this._notification.emit('done-displaying');
|
this._updateState();
|
||||||
|
|
||||||
if (!this._notification.resident)
|
|
||||||
this._notification.destroy();
|
|
||||||
|
|
||||||
this._notificationClosed = false;
|
this._notificationClosed = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1769,7 +1809,10 @@ const MessageTray = new Lang.Class({
|
|||||||
|
|
||||||
_onSummaryItemClicked: function(summaryItem, button) {
|
_onSummaryItemClicked: function(summaryItem, button) {
|
||||||
if (summaryItem.source.handleSummaryClick()) {
|
if (summaryItem.source.handleSummaryClick()) {
|
||||||
this._escapeTray();
|
if (summaryItem.source.keepTrayOnSummaryClick)
|
||||||
|
this._setClickedSummaryItem(null);
|
||||||
|
else
|
||||||
|
this._escapeTray();
|
||||||
} else {
|
} else {
|
||||||
if (!this._setClickedSummaryItem(summaryItem, button))
|
if (!this._setClickedSummaryItem(summaryItem, button))
|
||||||
this._setClickedSummaryItem(null);
|
this._setClickedSummaryItem(null);
|
||||||
@ -1860,6 +1903,20 @@ const MessageTray = new Lang.Class({
|
|||||||
this._updateState();
|
this._updateState();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onKeyboardVisibleChanged: function(layoutManager, keyboardVisible) {
|
||||||
|
if (this._keyboardVisible == keyboardVisible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._keyboardVisible = keyboardVisible;
|
||||||
|
|
||||||
|
if (keyboardVisible)
|
||||||
|
this.actor.add_style_pseudo_class('keyboard');
|
||||||
|
else
|
||||||
|
this.actor.remove_style_pseudo_class('keyboard');
|
||||||
|
|
||||||
|
this._updateState();
|
||||||
|
},
|
||||||
|
|
||||||
_onFullscreenChanged: function(obj, state) {
|
_onFullscreenChanged: function(obj, state) {
|
||||||
this._inFullscreen = state;
|
this._inFullscreen = state;
|
||||||
this._updateState();
|
this._updateState();
|
||||||
@ -1922,8 +1979,9 @@ const MessageTray = new Lang.Class({
|
|||||||
// Notifications
|
// Notifications
|
||||||
let notificationQueue = this._notificationQueue;
|
let notificationQueue = this._notificationQueue;
|
||||||
let notificationUrgent = notificationQueue.length > 0 && notificationQueue[0].urgency == Urgency.CRITICAL;
|
let notificationUrgent = notificationQueue.length > 0 && notificationQueue[0].urgency == Urgency.CRITICAL;
|
||||||
|
let notificationForFeedback = notificationQueue.length > 0 && notificationQueue[0].forFeedback;
|
||||||
let notificationsLimited = this._busy || this._inFullscreen;
|
let notificationsLimited = this._busy || this._inFullscreen;
|
||||||
let notificationsPending = notificationQueue.length > 0 && (!notificationsLimited || notificationUrgent) && Main.sessionMode.hasNotifications;
|
let notificationsPending = notificationQueue.length > 0 && (!notificationsLimited || notificationUrgent || notificationForFeedback) && Main.sessionMode.hasNotifications;
|
||||||
let nextNotification = notificationQueue.length > 0 ? notificationQueue[0] : null;
|
let nextNotification = notificationQueue.length > 0 ? notificationQueue[0] : null;
|
||||||
let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved;
|
let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved;
|
||||||
let notificationExpanded = this._notification && this._notification.expanded;
|
let notificationExpanded = this._notification && this._notification.expanded;
|
||||||
@ -2000,9 +2058,22 @@ const MessageTray = new Lang.Class({
|
|||||||
let trayShouldBeVisible = (this._summaryState == State.SHOWING ||
|
let trayShouldBeVisible = (this._summaryState == State.SHOWING ||
|
||||||
this._summaryState == State.SHOWN);
|
this._summaryState == State.SHOWN);
|
||||||
if (!trayIsVisible && trayShouldBeVisible)
|
if (!trayIsVisible && trayShouldBeVisible)
|
||||||
this._showTray();
|
trayShouldBeVisible = this._showTray();
|
||||||
else if (trayIsVisible && !trayShouldBeVisible)
|
else if (trayIsVisible && !trayShouldBeVisible)
|
||||||
this._hideTray();
|
this._hideTray();
|
||||||
|
|
||||||
|
// Desktop clone
|
||||||
|
let desktopCloneIsVisible = (this._desktopCloneState == State.SHOWING ||
|
||||||
|
this._desktopCloneState == State.SHOWN);
|
||||||
|
let desktopCloneShouldBeVisible = (trayShouldBeVisible &&
|
||||||
|
!this._overviewVisible &&
|
||||||
|
!this._keyboardVisible);
|
||||||
|
|
||||||
|
if (!desktopCloneIsVisible && desktopCloneShouldBeVisible) {
|
||||||
|
this._showDesktopClone();
|
||||||
|
} else if (desktopCloneIsVisible && !desktopCloneShouldBeVisible) {
|
||||||
|
this._hideDesktopClone (this._keyboardVisible);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_tween: function(actor, statevar, value, params) {
|
_tween: function(actor, statevar, value, params) {
|
||||||
@ -2031,11 +2102,13 @@ const MessageTray = new Lang.Class({
|
|||||||
// Don't actually take a modal grab in the overview.
|
// Don't actually take a modal grab in the overview.
|
||||||
// Just add something to the grab stack that we can
|
// Just add something to the grab stack that we can
|
||||||
// pop later.
|
// pop later.
|
||||||
|
let modal = !this._overviewVisible;
|
||||||
|
|
||||||
if (!this._grabHelper.grab({ actor: this.actor,
|
if (!this._grabHelper.grab({ actor: this.actor,
|
||||||
modal: !this._overviewVisible,
|
modal: modal,
|
||||||
onUngrab: Lang.bind(this, this._escapeTray) })) {
|
onUngrab: Lang.bind(this, this._escapeTray) })) {
|
||||||
this._traySummoned = false;
|
this._traySummoned = false;
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._tween(this.actor, '_trayState', State.SHOWN,
|
this._tween(this.actor, '_trayState', State.SHOWN,
|
||||||
@ -2044,45 +2117,49 @@ const MessageTray = new Lang.Class({
|
|||||||
transition: 'easeOutQuad'
|
transition: 'easeOutQuad'
|
||||||
});
|
});
|
||||||
|
|
||||||
// Don't move the windows up if we are in the overview,
|
if (!this._overviewVisible)
|
||||||
// but show the tray in the ctrl+alt+tab list.
|
this._lightbox.show();
|
||||||
if (this._overviewVisible) {
|
|
||||||
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'start-here-symbolic',
|
|
||||||
{ sortGroup: CtrlAltTab.SortGroup.BOTTOM });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateDesktopCloneClip: function() {
|
||||||
|
let geometry = this._bottomMonitorGeometry;
|
||||||
|
let progress = -Math.round(this._desktopClone.y);
|
||||||
|
this._desktopClone.set_clip(geometry.x,
|
||||||
|
geometry.y + progress,
|
||||||
|
geometry.width,
|
||||||
|
geometry.height - progress);
|
||||||
|
},
|
||||||
|
|
||||||
|
_showDesktopClone: function() {
|
||||||
let bottomMonitor = Main.layoutManager.bottomMonitor;
|
let bottomMonitor = Main.layoutManager.bottomMonitor;
|
||||||
let geometry = new Clutter.Geometry({ x: bottomMonitor.x,
|
this._bottomMonitorGeometry = { x: bottomMonitor.x,
|
||||||
y: bottomMonitor.y,
|
y: bottomMonitor.y,
|
||||||
width: bottomMonitor.width,
|
width: bottomMonitor.width,
|
||||||
height: bottomMonitor.height
|
height: bottomMonitor.height };
|
||||||
});
|
|
||||||
this._desktopClone = new Clutter.Clone({ source: global.window_group, clip: geometry });
|
if (this._desktopClone)
|
||||||
|
this._desktopClone.destroy();
|
||||||
|
this._desktopClone = new Clutter.Clone({ source: global.window_group, clip: new Clutter.Geometry(this._bottomMonitorGeometry) });
|
||||||
Main.uiGroup.insert_child_above(this._desktopClone, global.window_group);
|
Main.uiGroup.insert_child_above(this._desktopClone, global.window_group);
|
||||||
this._desktopClone.x = 0;
|
this._desktopClone.x = 0;
|
||||||
this._desktopClone.y = 0;
|
this._desktopClone.y = 0;
|
||||||
this._desktopClone.show();
|
this._desktopClone.show();
|
||||||
|
|
||||||
this._lightbox.show();
|
this._tween(this._desktopClone, '_desktopCloneState', State.SHOWN,
|
||||||
|
{ y: -this.actor.height,
|
||||||
this._desktopClone._progress = 0;
|
time: ANIMATION_TIME,
|
||||||
Tweener.addTween(this._desktopClone,
|
transition: 'easeOutQuad',
|
||||||
{ _progress: this.actor.height,
|
onUpdate: Lang.bind(this, this._updateDesktopCloneClip)
|
||||||
time: ANIMATION_TIME,
|
});
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onUpdate: Lang.bind(this, function() {
|
|
||||||
let progress = Math.round(this._desktopClone._progress);
|
|
||||||
this._desktopClone.y = - progress;
|
|
||||||
this._desktopClone.set_clip(geometry.x,
|
|
||||||
geometry.y + progress,
|
|
||||||
geometry.width,
|
|
||||||
geometry.height - progress);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_hideTray: function() {
|
_hideTray: function() {
|
||||||
|
// Having the summary item animate out while sliding down the tray
|
||||||
|
// is distracting, so hide it immediately in case it was visible.
|
||||||
|
this._summaryBoxPointer.actor.hide();
|
||||||
|
|
||||||
this._tween(this.actor, '_trayState', State.HIDDEN,
|
this._tween(this.actor, '_trayState', State.HIDDEN,
|
||||||
{ y: 0,
|
{ y: 0,
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
@ -2093,51 +2170,43 @@ const MessageTray = new Lang.Class({
|
|||||||
// which would happen if GrabHelper ungrabbed for us.
|
// which would happen if GrabHelper ungrabbed for us.
|
||||||
// This is a no-op in that case.
|
// This is a no-op in that case.
|
||||||
this._grabHelper.ungrab({ actor: this.actor });
|
this._grabHelper.ungrab({ actor: this.actor });
|
||||||
|
|
||||||
// If we are coming back from the overview, there are no windows
|
|
||||||
// to be moved. Just remove the tray from the ctrl+alt+tab list.
|
|
||||||
if (!this._desktopClone) {
|
|
||||||
Main.ctrlAltTabManager.removeGroup(this._summary);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let geometry = this._desktopClone.clip;
|
|
||||||
this._desktopClone._progress = 0;
|
|
||||||
Tweener.addTween(this._desktopClone,
|
|
||||||
{ _progress: this.actor.height,
|
|
||||||
time: ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onComplete: Lang.bind(this, function() {
|
|
||||||
this._desktopClone.destroy();
|
|
||||||
this._desktopClone = null;
|
|
||||||
}),
|
|
||||||
onUpdate: Lang.bind(this, function() {
|
|
||||||
let progress = Math.round(this._desktopClone._progress);
|
|
||||||
this._desktopClone.y = progress - this.actor.height;
|
|
||||||
this._desktopClone.set_clip(geometry.x,
|
|
||||||
geometry.y - progress,
|
|
||||||
geometry.width,
|
|
||||||
geometry.height + progress);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
this._lightbox.hide();
|
this._lightbox.hide();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
|
_hideDesktopClone: function(now) {
|
||||||
this.idleMonitor.remove_watch(this._idleMonitorWatchId);
|
this._tween(this._desktopClone, '_desktopCloneState', State.HIDDEN,
|
||||||
this._idleMonitorWatchId = 0;
|
{ y: 0,
|
||||||
if (!userBecameIdle)
|
time: now ? 0 : ANIMATION_TIME,
|
||||||
this._updateNotificationTimeout(2000);
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: Lang.bind(this, function() {
|
||||||
|
this._desktopClone.destroy();
|
||||||
|
this._desktopClone = null;
|
||||||
|
this._bottomMonitorGeometry = null;
|
||||||
|
}),
|
||||||
|
onUpdate: Lang.bind(this, this._updateDesktopCloneClip)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
_onIdleMonitorBecameActive: function() {
|
||||||
|
this.idleMonitor.disconnect(this._idleMonitorBecameActiveId);
|
||||||
|
this._idleMonitorBecameActiveId = 0;
|
||||||
|
|
||||||
this._userActiveWhileNotificationShown = true;
|
this._userActiveWhileNotificationShown = true;
|
||||||
|
this._updateNotificationTimeout(2000);
|
||||||
this._updateState();
|
this._updateState();
|
||||||
},
|
},
|
||||||
|
|
||||||
_showNotification: function() {
|
_showNotification: function() {
|
||||||
this._notification = this._notificationQueue.shift();
|
this._notification = this._notificationQueue.shift();
|
||||||
this._userActiveWhileNotificationShown = this.idleMonitor.get_idletime() <= IDLE_TIME;
|
|
||||||
this._idleMonitorWatchId = this.idleMonitor.add_watch(IDLE_TIME,
|
let userIdle = this.idleMonitor.get_idletime() > IDLE_TIME;
|
||||||
Lang.bind(this, this._onIdleMonitorWatch));
|
if (userIdle) {
|
||||||
|
this._userActiveWhileNotificationShown = false;
|
||||||
|
this._idleMonitorBecameActiveId = this.idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
|
||||||
|
} else {
|
||||||
|
this._userActiveWhileNotificationShown = true;
|
||||||
|
}
|
||||||
|
|
||||||
this._notificationClickedId = this._notification.connect('done-displaying',
|
this._notificationClickedId = this._notification.connect('done-displaying',
|
||||||
Lang.bind(this, this._escapeTray));
|
Lang.bind(this, this._escapeTray));
|
||||||
this._notification.connect('unfocused', Lang.bind(this, function() {
|
this._notification.connect('unfocused', Lang.bind(this, function() {
|
||||||
@ -2248,8 +2317,25 @@ const MessageTray = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_hideNotification: function() {
|
_hideNotification: function() {
|
||||||
|
// HACK!
|
||||||
|
// There seems to be a reentrancy issue in calling .ungrab() here,
|
||||||
|
// which causes _updateState to be called before _notificationState
|
||||||
|
// becomes HIDING. That hides the notification again, nullifying the
|
||||||
|
// object but not setting _notificationState (and that's the weird part)
|
||||||
|
// As then _notificationState is stuck into SHOWN but _notification
|
||||||
|
// is null, every new _updateState fails and the message tray is
|
||||||
|
// lost forever.
|
||||||
|
//
|
||||||
|
// See more at https://bugzilla.gnome.org/show_bug.cgi?id=683986
|
||||||
|
this._notificationState = State.HIDING;
|
||||||
|
|
||||||
this._grabHelper.ungrab({ actor: this._notification.actor });
|
this._grabHelper.ungrab({ actor: this._notification.actor });
|
||||||
|
|
||||||
|
if (this._idleMonitorBecameActiveId) {
|
||||||
|
this.idleMonitor.disconnect(this._idleMonitorBecameActiveId);
|
||||||
|
this._idleMonitorBecameActiveId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (this._notificationExpandedId) {
|
if (this._notificationExpandedId) {
|
||||||
this._notification.disconnect(this._notificationExpandedId);
|
this._notification.disconnect(this._notificationExpandedId);
|
||||||
this._notificationExpandedId = 0;
|
this._notificationExpandedId = 0;
|
||||||
@ -2289,6 +2375,13 @@ const MessageTray = new Lang.Class({
|
|||||||
notification.destroy(NotificationDestroyedReason.EXPIRED);
|
notification.destroy(NotificationDestroyedReason.EXPIRED);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_expandActiveNotification: function() {
|
||||||
|
if (!this._notification)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._expandNotification(false);
|
||||||
|
},
|
||||||
|
|
||||||
_expandNotification: function(autoExpanding) {
|
_expandNotification: function(autoExpanding) {
|
||||||
// Don't grab focus in notifications that are auto-expanded.
|
// Don't grab focus in notifications that are auto-expanded.
|
||||||
if (!autoExpanding)
|
if (!autoExpanding)
|
||||||
@ -2312,8 +2405,13 @@ const MessageTray = new Lang.Class({
|
|||||||
if (this._notificationWidget.y < expandedY) {
|
if (this._notificationWidget.y < expandedY) {
|
||||||
this._notificationWidget.y = expandedY;
|
this._notificationWidget.y = expandedY;
|
||||||
} else if (this._notification.y != expandedY) {
|
} else if (this._notification.y != expandedY) {
|
||||||
|
// Tween also opacity here, to override a possible tween that's
|
||||||
|
// currently hiding the notification. This will ensure that the
|
||||||
|
// notification is not removed when the onComplete handler for this
|
||||||
|
// one triggers.
|
||||||
this._tween(this._notificationWidget, '_notificationState', State.SHOWN,
|
this._tween(this._notificationWidget, '_notificationState', State.SHOWN,
|
||||||
{ y: expandedY,
|
{ y: expandedY,
|
||||||
|
opacity: 255,
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad'
|
transition: 'easeOutQuad'
|
||||||
});
|
});
|
||||||
@ -2365,7 +2463,10 @@ const MessageTray = new Lang.Class({
|
|||||||
this._notificationQueue = newQueue;
|
this._notificationQueue = newQueue;
|
||||||
|
|
||||||
this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackWidget;
|
this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackWidget;
|
||||||
this._summaryBoxPointerItem.closeButtonVisible = true;
|
|
||||||
|
let closeButton = this._summaryBoxPointerItem.closeButton;
|
||||||
|
closeButton.show();
|
||||||
|
this._summaryBoxPointerCloseClickedId = closeButton.connect('clicked', Lang.bind(this, this._hideSummaryBoxPointer));
|
||||||
this._summaryBoxPointerItem.prepareNotificationStackForShowing();
|
this._summaryBoxPointerItem.prepareNotificationStackForShowing();
|
||||||
} else if (this._clickedSummaryItemMouseButton == 3) {
|
} else if (this._clickedSummaryItemMouseButton == 3) {
|
||||||
this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
|
this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
|
||||||
@ -2457,6 +2558,9 @@ const MessageTray = new Lang.Class({
|
|||||||
this._summaryBoxPointer.actor.hide();
|
this._summaryBoxPointer.actor.hide();
|
||||||
this._hideSummaryBoxPointerCompleted();
|
this._hideSummaryBoxPointerCompleted();
|
||||||
} else {
|
} else {
|
||||||
|
if (global.stage.key_focus &&
|
||||||
|
!this.actor.contains(global.stage.key_focus))
|
||||||
|
this._setClickedSummaryItem(null);
|
||||||
this._summaryBoxPointer.hide(BoxPointer.PopupAnimation.FULL, Lang.bind(this, this._hideSummaryBoxPointerCompleted));
|
this._summaryBoxPointer.hide(BoxPointer.PopupAnimation.FULL, Lang.bind(this, this._hideSummaryBoxPointerCompleted));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -2472,6 +2576,8 @@ const MessageTray = new Lang.Class({
|
|||||||
this._summaryBoxPointer.bin.child = null;
|
this._summaryBoxPointer.bin.child = null;
|
||||||
this._summaryBoxPointerItem.disconnect(this._summaryBoxPointerContentUpdatedId);
|
this._summaryBoxPointerItem.disconnect(this._summaryBoxPointerContentUpdatedId);
|
||||||
this._summaryBoxPointerContentUpdatedId = 0;
|
this._summaryBoxPointerContentUpdatedId = 0;
|
||||||
|
this._summaryBoxPointerItem.closeButton.disconnect(this._summaryBoxPointerCloseClickedId);
|
||||||
|
this._summaryBoxPointerCloseClickedId = 0;
|
||||||
this._summaryBoxPointerItem.source.disconnect(this._sourceDoneDisplayingId);
|
this._summaryBoxPointerItem.source.disconnect(this._sourceDoneDisplayingId);
|
||||||
this._summaryBoxPointerDoneDisplayingId = 0;
|
this._summaryBoxPointerDoneDisplayingId = 0;
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ const Main = imports.ui.main;
|
|||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const OPEN_AND_CLOSE_TIME = 0.1;
|
const OPEN_AND_CLOSE_TIME = 0.1;
|
||||||
const FADE_IN_BUTTONS_TIME = 0.33;
|
|
||||||
const FADE_OUT_DIALOG_TIME = 1.0;
|
const FADE_OUT_DIALOG_TIME = 1.0;
|
||||||
|
|
||||||
const State = {
|
const State = {
|
||||||
@ -38,10 +37,12 @@ const ModalDialog = new Lang.Class({
|
|||||||
params = Params.parse(params, { shellReactive: false,
|
params = Params.parse(params, { shellReactive: false,
|
||||||
styleClass: null,
|
styleClass: null,
|
||||||
parentActor: Main.uiGroup,
|
parentActor: Main.uiGroup,
|
||||||
|
keybindingMode: Main.KeybindingMode.SYSTEM_MODAL,
|
||||||
shouldFadeIn: true });
|
shouldFadeIn: true });
|
||||||
|
|
||||||
this.state = State.CLOSED;
|
this.state = State.CLOSED;
|
||||||
this._hasModal = false;
|
this._hasModal = false;
|
||||||
|
this._keybindingMode = params.keybindingMode;
|
||||||
this._shellReactive = params.shellReactive;
|
this._shellReactive = params.shellReactive;
|
||||||
this._shouldFadeIn = params.shouldFadeIn;
|
this._shouldFadeIn = params.shouldFadeIn;
|
||||||
|
|
||||||
@ -117,8 +118,6 @@ const ModalDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setButtons: function(buttons) {
|
setButtons: function(buttons) {
|
||||||
let hadChildren = this._buttonLayout.get_children() > 0;
|
|
||||||
|
|
||||||
this._buttonLayout.destroy_all_children();
|
this._buttonLayout.destroy_all_children();
|
||||||
this._actionKeys = {};
|
this._actionKeys = {};
|
||||||
|
|
||||||
@ -131,8 +130,11 @@ const ModalDialog = new Lang.Class({
|
|||||||
let key = buttonInfo['key'];
|
let key = buttonInfo['key'];
|
||||||
let isDefault = buttonInfo['default'];
|
let isDefault = buttonInfo['default'];
|
||||||
|
|
||||||
if (isDefault && !key)
|
if (isDefault && !key) {
|
||||||
|
this._actionKeys[Clutter.KEY_KP_Enter] = action;
|
||||||
|
this._actionKeys[Clutter.KEY_ISO_Enter] = action;
|
||||||
key = Clutter.KEY_Return;
|
key = Clutter.KEY_Return;
|
||||||
|
}
|
||||||
|
|
||||||
buttonInfo.button = new St.Button({ style_class: 'modal-dialog-button',
|
buttonInfo.button = new St.Button({ style_class: 'modal-dialog-button',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
@ -166,21 +168,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
this._actionKeys[key] = action;
|
this._actionKeys[key] = action;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fade in buttons if there weren't any before
|
this.emit('buttons-set');
|
||||||
if (!hadChildren && buttons.length > 0) {
|
|
||||||
this._buttonLayout.opacity = 0;
|
|
||||||
Tweener.addTween(this._buttonLayout,
|
|
||||||
{ opacity: 255,
|
|
||||||
time: FADE_IN_BUTTONS_TIME,
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onComplete: Lang.bind(this, function() {
|
|
||||||
this.emit('buttons-set');
|
|
||||||
})
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.emit('buttons-set');
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onKeyReleaseEvent: function(object, event) {
|
_onKeyReleaseEvent: function(object, event) {
|
||||||
@ -199,8 +187,11 @@ const ModalDialog = new Lang.Class({
|
|||||||
this.emit('destroy');
|
this.emit('destroy');
|
||||||
},
|
},
|
||||||
|
|
||||||
_fadeOpen: function() {
|
_fadeOpen: function(onPrimary) {
|
||||||
this._monitorConstraint.index = global.screen.get_current_monitor();
|
if (onPrimary)
|
||||||
|
this._monitorConstraint.primary = true;
|
||||||
|
else
|
||||||
|
this._monitorConstraint.index = global.screen.get_current_monitor();
|
||||||
|
|
||||||
this.state = State.OPENING;
|
this.state = State.OPENING;
|
||||||
|
|
||||||
@ -233,14 +224,14 @@ const ModalDialog = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
open: function(timestamp) {
|
open: function(timestamp, onPrimary) {
|
||||||
if (this.state == State.OPENED || this.state == State.OPENING)
|
if (this.state == State.OPENED || this.state == State.OPENING)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!this.pushModal(timestamp))
|
if (!this.pushModal({ timestamp: timestamp }))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._fadeOpen();
|
this._fadeOpen(onPrimary);
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -287,7 +278,8 @@ const ModalDialog = new Lang.Class({
|
|||||||
pushModal: function (timestamp) {
|
pushModal: function (timestamp) {
|
||||||
if (this._hasModal)
|
if (this._hasModal)
|
||||||
return true;
|
return true;
|
||||||
if (!Main.pushModal(this._group, timestamp))
|
if (!Main.pushModal(this._group, { timestamp: timestamp,
|
||||||
|
keybindingMode: this._keybindingMode }))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._hasModal = true;
|
this._hasModal = true;
|
||||||
|
@ -116,8 +116,8 @@ const NotificationDaemon = new Lang.Class({
|
|||||||
this._busProxy = new Bus();
|
this._busProxy = new Bus();
|
||||||
|
|
||||||
this._trayManager = new Shell.TrayManager();
|
this._trayManager = new Shell.TrayManager();
|
||||||
this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
|
this._trayIconAddedId = this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
|
||||||
this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
|
this._trayIconRemovedId = this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
|
||||||
|
|
||||||
Shell.WindowTracker.get_default().connect('notify::focus-app',
|
Shell.WindowTracker.get_default().connect('notify::focus-app',
|
||||||
Lang.bind(this, this._onFocusAppChanged));
|
Lang.bind(this, this._onFocusAppChanged));
|
||||||
@ -356,12 +356,10 @@ const NotificationDaemon = new Lang.Class({
|
|||||||
ndata.actions, ndata.hints, ndata.notification];
|
ndata.actions, ndata.hints, ndata.notification];
|
||||||
|
|
||||||
let gicon = this._iconForNotificationData(icon, hints);
|
let gicon = this._iconForNotificationData(icon, hints);
|
||||||
let iconActor = new St.Icon({ gicon: gicon,
|
|
||||||
icon_size: MessageTray.NOTIFICATION_ICON_SIZE });
|
|
||||||
|
|
||||||
if (notification == null) {
|
if (notification == null) {
|
||||||
notification = new MessageTray.Notification(source, summary, body,
|
notification = new MessageTray.Notification(source, summary, body,
|
||||||
{ icon: iconActor,
|
{ gicon: gicon,
|
||||||
bannerMarkup: true });
|
bannerMarkup: true });
|
||||||
ndata.notification = notification;
|
ndata.notification = notification;
|
||||||
notification.connect('destroy', Lang.bind(this,
|
notification.connect('destroy', Lang.bind(this,
|
||||||
@ -386,7 +384,7 @@ const NotificationDaemon = new Lang.Class({
|
|||||||
this._emitActionInvoked(ndata.id, actionId);
|
this._emitActionInvoked(ndata.id, actionId);
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
notification.update(summary, body, { icon: iconActor,
|
notification.update(summary, body, { gicon: gicon,
|
||||||
bannerMarkup: true,
|
bannerMarkup: true,
|
||||||
clear: true });
|
clear: true });
|
||||||
}
|
}
|
||||||
|
@ -23,11 +23,29 @@ const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
|||||||
// Time for initial animation going into Overview mode
|
// Time for initial animation going into Overview mode
|
||||||
const ANIMATION_TIME = 0.25;
|
const ANIMATION_TIME = 0.25;
|
||||||
|
|
||||||
// We split the screen vertically between the dash and the view selector.
|
// XXX -- grab this automatically. Hard to do.
|
||||||
const DASH_SPLIT_FRACTION = 0.1;
|
const DASH_MAX_WIDTH = 96;
|
||||||
|
|
||||||
const DND_WINDOW_SWITCH_TIMEOUT = 1250;
|
const DND_WINDOW_SWITCH_TIMEOUT = 1250;
|
||||||
|
|
||||||
|
const GLSL_DIM_EFFECT_DECLARATIONS = '';
|
||||||
|
const GLSL_DIM_EFFECT_CODE = '\
|
||||||
|
vec2 dist = cogl_tex_coord_in[0].xy - vec2(0.5, 0.5); \
|
||||||
|
float elipse_radius = 0.5; \
|
||||||
|
/* from https://bugzilla.gnome.org/show_bug.cgi?id=669798: \
|
||||||
|
the alpha on the gradient goes from 165 at its darkest to 98 at its most transparent. */ \
|
||||||
|
float y = 165.0 / 255.0; \
|
||||||
|
float x = 98.0 / 255.0; \
|
||||||
|
/* interpolate darkening value, based on distance from screen center */ \
|
||||||
|
float val = min(length(dist), elipse_radius); \
|
||||||
|
float a = mix(x, y, val / elipse_radius); \
|
||||||
|
/* dim_factor varies from [1.0 -> 0.5] when overview is showing \
|
||||||
|
We use it to smooth value, then we clamp it to valid color interval */ \
|
||||||
|
a = clamp(a - cogl_color_in.r + 0.5, 0.0, 1.0); \
|
||||||
|
/* We\'re blending between: color and black color (obviously omitted in the equation) */ \
|
||||||
|
cogl_color_out.xyz = cogl_color_out.xyz * (1.0 - a); \
|
||||||
|
cogl_color_out.a = 1.0;';
|
||||||
|
|
||||||
const SwipeScrollDirection = {
|
const SwipeScrollDirection = {
|
||||||
NONE: 0,
|
NONE: 0,
|
||||||
HORIZONTAL: 1,
|
HORIZONTAL: 1,
|
||||||
@ -57,7 +75,14 @@ const ShellInfo = new Lang.Class({
|
|||||||
this._source.destroy();
|
this._source.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
setMessage: function(text, undoCallback, undoLabel) {
|
setMessage: function(text, options) {
|
||||||
|
options = Params.parse(options, { undoCallback: null,
|
||||||
|
forFeedback: false
|
||||||
|
});
|
||||||
|
|
||||||
|
let undoCallback = options.undoCallback;
|
||||||
|
let forFeedback = options.forFeedback;
|
||||||
|
|
||||||
if (this._source == null) {
|
if (this._source == null) {
|
||||||
this._source = new MessageTray.SystemNotificationSource();
|
this._source = new MessageTray.SystemNotificationSource();
|
||||||
this._source.connect('destroy', Lang.bind(this,
|
this._source.connect('destroy', Lang.bind(this,
|
||||||
@ -71,6 +96,7 @@ const ShellInfo = new Lang.Class({
|
|||||||
if (this._source.notifications.length == 0) {
|
if (this._source.notifications.length == 0) {
|
||||||
notification = new MessageTray.Notification(this._source, text, null);
|
notification = new MessageTray.Notification(this._source, text, null);
|
||||||
notification.setTransient(true);
|
notification.setTransient(true);
|
||||||
|
notification.setForFeedback(forFeedback);
|
||||||
} else {
|
} else {
|
||||||
notification = this._source.notifications[0];
|
notification = this._source.notifications[0];
|
||||||
notification.update(text, null, { clear: true });
|
notification.update(text, null, { clear: true });
|
||||||
@ -78,10 +104,8 @@ const ShellInfo = new Lang.Class({
|
|||||||
|
|
||||||
this._undoCallback = undoCallback;
|
this._undoCallback = undoCallback;
|
||||||
if (undoCallback) {
|
if (undoCallback) {
|
||||||
notification.addButton('system-undo',
|
notification.addButton('system-undo', _("Undo"));
|
||||||
undoLabel ? undoLabel : _("Undo"));
|
notification.connect('action-invoked', Lang.bind(this, this._onUndoClicked));
|
||||||
notification.connect('action-invoked',
|
|
||||||
Lang.bind(this, this._onUndoClicked));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this._source.notify(notification);
|
this._source.notify(notification);
|
||||||
@ -113,6 +137,10 @@ const Overview = new Lang.Class({
|
|||||||
// scenes which allows us to show the background with different
|
// scenes which allows us to show the background with different
|
||||||
// rendering options without duplicating the texture data.
|
// rendering options without duplicating the texture data.
|
||||||
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
|
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
|
||||||
|
this._background.add_glsl_snippet(Meta.SnippetHook.FRAGMENT,
|
||||||
|
GLSL_DIM_EFFECT_DECLARATIONS,
|
||||||
|
GLSL_DIM_EFFECT_CODE,
|
||||||
|
false);
|
||||||
this._background.hide();
|
this._background.hide();
|
||||||
global.overlay_group.add_actor(this._background);
|
global.overlay_group.add_actor(this._background);
|
||||||
|
|
||||||
@ -233,11 +261,16 @@ const Overview = new Lang.Class({
|
|||||||
this._viewSelector.removeSearchProvider(provider);
|
this._viewSelector.removeSearchProvider(provider);
|
||||||
},
|
},
|
||||||
|
|
||||||
setMessage: function(text, undoCallback, undoLabel) {
|
//
|
||||||
|
// options:
|
||||||
|
// - undoCallback (function): the callback to be called if undo support is needed
|
||||||
|
// - forFeedback (boolean): whether the message is for direct feedback of a user action
|
||||||
|
//
|
||||||
|
setMessage: function(text, options) {
|
||||||
if (this.isDummy)
|
if (this.isDummy)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._shellInfo.setMessage(text, undoCallback, undoLabel);
|
this._shellInfo.setMessage(text, options);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDragBegin: function() {
|
_onDragBegin: function() {
|
||||||
@ -470,7 +503,9 @@ const Overview = new Lang.Class({
|
|||||||
if (windows.length == 0)
|
if (windows.length == 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
let clone = new Clutter.Clone({ source: windows[0].get_texture() });
|
let window = windows[0];
|
||||||
|
let clone = new Clutter.Clone({ source: window.get_texture(),
|
||||||
|
x: window.x, y: window.y });
|
||||||
clone.source.connect('destroy', Lang.bind(this, function() {
|
clone.source.connect('destroy', Lang.bind(this, function() {
|
||||||
clone.destroy();
|
clone.destroy();
|
||||||
}));
|
}));
|
||||||
@ -500,7 +535,7 @@ const Overview = new Lang.Class({
|
|||||||
let searchX = (primary.width - searchWidth) / 2;
|
let searchX = (primary.width - searchWidth) / 2;
|
||||||
let searchY = contentY + this._spacing;
|
let searchY = contentY + this._spacing;
|
||||||
|
|
||||||
let dashWidth = Math.round(DASH_SPLIT_FRACTION * primary.width);
|
let dashWidth = DASH_MAX_WIDTH;
|
||||||
let dashY = searchY + searchHeight + this._spacing;
|
let dashY = searchY + searchHeight + this._spacing;
|
||||||
let dashX;
|
let dashX;
|
||||||
if (rtl) {
|
if (rtl) {
|
||||||
@ -556,7 +591,7 @@ const Overview = new Lang.Class({
|
|||||||
if (this._shown)
|
if (this._shown)
|
||||||
return;
|
return;
|
||||||
// Do this manually instead of using _syncInputMode, to handle failure
|
// Do this manually instead of using _syncInputMode, to handle failure
|
||||||
if (!Main.pushModal(this._group))
|
if (!Main.pushModal(this._group, { keybindingMode: Main.KeybindingMode.OVERVIEW }))
|
||||||
return;
|
return;
|
||||||
this._modal = true;
|
this._modal = true;
|
||||||
this._animateVisible();
|
this._animateVisible();
|
||||||
@ -620,7 +655,7 @@ const Overview = new Lang.Class({
|
|||||||
});
|
});
|
||||||
|
|
||||||
Tweener.addTween(this._background,
|
Tweener.addTween(this._background,
|
||||||
{ dim_factor: 0.4,
|
{ dim_factor: 0.8,
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad'
|
transition: 'easeOutQuad'
|
||||||
});
|
});
|
||||||
@ -707,7 +742,8 @@ const Overview = new Lang.Class({
|
|||||||
|
|
||||||
if (this._shown) {
|
if (this._shown) {
|
||||||
if (!this._modal) {
|
if (!this._modal) {
|
||||||
if (Main.pushModal(this._group))
|
if (Main.pushModal(this._group,
|
||||||
|
{ keybindingMode: Main.KeybindingMode.OVERVIEW }))
|
||||||
this._modal = true;
|
this._modal = true;
|
||||||
else
|
else
|
||||||
this.hide();
|
this.hide();
|
||||||
|
@ -82,26 +82,34 @@ const AnimatedIcon = new Lang.Class({
|
|||||||
_init: function(name, size) {
|
_init: function(name, size) {
|
||||||
this.actor = new St.Bin({ visible: false });
|
this.actor = new St.Bin({ visible: false });
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
this.actor.connect('notify::visible', Lang.bind(this, this._onVisibleNotify));
|
|
||||||
|
|
||||||
|
this._isLoaded = false;
|
||||||
|
this._isPlaying = false;
|
||||||
this._timeoutId = 0;
|
this._timeoutId = 0;
|
||||||
this._frame = 0;
|
this._frame = 0;
|
||||||
this._animations = St.TextureCache.get_default().load_sliced_image (global.datadir + '/theme/' + name, size, size);
|
this._animations = St.TextureCache.get_default().load_sliced_image (global.datadir + '/theme/' + name, size, size,
|
||||||
|
Lang.bind(this, this._animationsLoaded));
|
||||||
this.actor.set_child(this._animations);
|
this.actor.set_child(this._animations);
|
||||||
},
|
},
|
||||||
|
|
||||||
_disconnectTimeout: function() {
|
play: function() {
|
||||||
|
if (this._isLoaded && this._timeoutId == 0) {
|
||||||
|
if (this._frame == 0)
|
||||||
|
this._showFrame(0);
|
||||||
|
|
||||||
|
this._timeoutId = Mainloop.timeout_add(ANIMATED_ICON_UPDATE_TIMEOUT, Lang.bind(this, this._update));
|
||||||
|
}
|
||||||
|
|
||||||
|
this._isPlaying = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
stop: function() {
|
||||||
if (this._timeoutId > 0) {
|
if (this._timeoutId > 0) {
|
||||||
Mainloop.source_remove(this._timeoutId);
|
Mainloop.source_remove(this._timeoutId);
|
||||||
this._timeoutId = 0;
|
this._timeoutId = 0;
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
_onVisibleNotify: function() {
|
this._isPlaying = false;
|
||||||
if (this.actor.visible)
|
|
||||||
this._timeoutId = Mainloop.timeout_add(ANIMATED_ICON_UPDATE_TIMEOUT, Lang.bind(this, this._update));
|
|
||||||
else
|
|
||||||
this._disconnectTimeout();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_showFrame: function(frame) {
|
_showFrame: function(frame) {
|
||||||
@ -121,8 +129,17 @@ const AnimatedIcon = new Lang.Class({
|
|||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_animationsLoaded: function() {
|
||||||
|
this._isLoaded = true;
|
||||||
|
|
||||||
|
if (this._isPlaying) {
|
||||||
|
this._showFrame(0);
|
||||||
|
this._timeoutId = Mainloop.timeout_add(ANIMATED_ICON_UPDATE_TIMEOUT, Lang.bind(this, this._update));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
this._disconnectTimeout();
|
this.stop();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -247,6 +264,10 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._container.connect('get-preferred-height', Lang.bind(this, this._getContentPreferredHeight));
|
this._container.connect('get-preferred-height', Lang.bind(this, this._getContentPreferredHeight));
|
||||||
this._container.connect('allocate', Lang.bind(this, this._contentAllocate));
|
this._container.connect('allocate', Lang.bind(this, this._contentAllocate));
|
||||||
|
|
||||||
|
let textureCache = St.TextureCache.get_default();
|
||||||
|
textureCache.connect('icon-theme-changed',
|
||||||
|
Lang.bind(this, this._onIconThemeChanged));
|
||||||
|
|
||||||
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
|
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
|
||||||
this._iconBox.connect('style-changed',
|
this._iconBox.connect('style-changed',
|
||||||
Lang.bind(this, this._onIconBoxStyleChanged));
|
Lang.bind(this, this._onIconBoxStyleChanged));
|
||||||
@ -332,6 +353,15 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._updateIconBoxClip();
|
this._updateIconBoxClip();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onIconThemeChanged: function() {
|
||||||
|
if (this._iconBox.child == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._iconBox.child.destroy();
|
||||||
|
let icon = this._targetApp.get_faded_icon(2 * PANEL_ICON_SIZE);
|
||||||
|
this._iconBox.set_child(icon);
|
||||||
|
},
|
||||||
|
|
||||||
_updateIconBoxClip: function() {
|
_updateIconBoxClip: function() {
|
||||||
let allocation = this._iconBox.allocation;
|
let allocation = this._iconBox.allocation;
|
||||||
if (this._iconBottomClip > 0)
|
if (this._iconBottomClip > 0)
|
||||||
@ -354,6 +384,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
transition: "easeOutQuad",
|
transition: "easeOutQuad",
|
||||||
onCompleteScope: this,
|
onCompleteScope: this,
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
|
this._spinner.stop();
|
||||||
this._spinner.actor.opacity = 255;
|
this._spinner.actor.opacity = 255;
|
||||||
this._spinner.actor.hide();
|
this._spinner.actor.hide();
|
||||||
}
|
}
|
||||||
@ -363,6 +394,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
startAnimation: function() {
|
startAnimation: function() {
|
||||||
this._stop = false;
|
this._stop = false;
|
||||||
this.actor.reactive = false;
|
this.actor.reactive = false;
|
||||||
|
this._spinner.play();
|
||||||
this._spinner.actor.show();
|
this._spinner.actor.show();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -901,6 +933,7 @@ const PANEL_ITEM_IMPLEMENTATIONS = {
|
|||||||
'volume': imports.ui.status.volume.Indicator,
|
'volume': imports.ui.status.volume.Indicator,
|
||||||
'battery': imports.ui.status.power.Indicator,
|
'battery': imports.ui.status.power.Indicator,
|
||||||
'lockScreen': imports.ui.status.lockScreenMenu.Indicator,
|
'lockScreen': imports.ui.status.lockScreenMenu.Indicator,
|
||||||
|
'logo': imports.gdm.loginDialog.LogoMenuButton,
|
||||||
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
||||||
'powerMenu': imports.gdm.powerMenu.PowerMenuButton,
|
'powerMenu': imports.gdm.powerMenu.PowerMenuButton,
|
||||||
'userMenu': imports.ui.userMenu.UserMenuButton
|
'userMenu': imports.ui.userMenu.UserMenuButton
|
||||||
@ -1026,16 +1059,19 @@ const Panel = new Lang.Class({
|
|||||||
}
|
}
|
||||||
this._rightBox.allocate(childBox, flags);
|
this._rightBox.allocate(childBox, flags);
|
||||||
|
|
||||||
let [cornerMinWidth, cornerWidth] = this._leftCorner.actor.get_preferred_width(-1);
|
let cornerMinWidth, cornerMinHeight;
|
||||||
let [cornerMinHeight, cornerHeight] = this._leftCorner.actor.get_preferred_width(-1);
|
let cornerWidth, cornerHeight;
|
||||||
|
|
||||||
|
[cornerMinWidth, cornerWidth] = this._leftCorner.actor.get_preferred_width(-1);
|
||||||
|
[cornerMinHeight, cornerHeight] = this._leftCorner.actor.get_preferred_height(-1);
|
||||||
childBox.x1 = 0;
|
childBox.x1 = 0;
|
||||||
childBox.x2 = cornerWidth;
|
childBox.x2 = cornerWidth;
|
||||||
childBox.y1 = allocHeight;
|
childBox.y1 = allocHeight;
|
||||||
childBox.y2 = allocHeight + cornerHeight;
|
childBox.y2 = allocHeight + cornerHeight;
|
||||||
this._leftCorner.actor.allocate(childBox, flags);
|
this._leftCorner.actor.allocate(childBox, flags);
|
||||||
|
|
||||||
let [cornerMinWidth, cornerWidth] = this._rightCorner.actor.get_preferred_width(-1);
|
[cornerMinWidth, cornerWidth] = this._rightCorner.actor.get_preferred_width(-1);
|
||||||
let [cornerMinHeight, cornerHeight] = this._rightCorner.actor.get_preferred_width(-1);
|
[cornerMinHeight, cornerHeight] = this._rightCorner.actor.get_preferred_height(-1);
|
||||||
childBox.x1 = allocWidth - cornerWidth;
|
childBox.x1 = allocWidth - cornerWidth;
|
||||||
childBox.x2 = allocWidth;
|
childBox.x2 = allocWidth;
|
||||||
childBox.y1 = allocHeight;
|
childBox.y1 = allocHeight;
|
||||||
|
@ -214,7 +214,8 @@ const Button = new Lang.Class({
|
|||||||
destroy: function() {
|
destroy: function() {
|
||||||
this.actor._delegate = null;
|
this.actor._delegate = null;
|
||||||
|
|
||||||
this.menu.destroy();
|
if (this.menu)
|
||||||
|
this.menu.destroy();
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
|
|
||||||
this.emit('destroy');
|
this.emit('destroy');
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
|
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
|
|
||||||
// We stop polling if the user is idle for more than this amount of time
|
// We stop polling if the user is idle for more than this amount of time
|
||||||
@ -40,9 +41,9 @@ const PointerWatcher = new Lang.Class({
|
|||||||
Name: 'PointerWatcher',
|
Name: 'PointerWatcher',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
let idleMonitor = Shell.IdleMonitor.get();
|
let idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||||
idleMonitor.add_watch(IDLE_TIME,
|
idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
|
||||||
Lang.bind(this, this._onIdleMonitorWatch));
|
idleMonitor.add_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle));
|
||||||
this._idle = idleMonitor.get_idletime() > IDLE_TIME;
|
this._idle = idleMonitor.get_idletime() > IDLE_TIME;
|
||||||
this._watches = [];
|
this._watches = [];
|
||||||
this.pointerX = null;
|
this.pointerX = null;
|
||||||
@ -78,11 +79,14 @@ const PointerWatcher = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
|
_onIdleMonitorBecameActive: function(monitor) {
|
||||||
this._idle = userBecameIdle;
|
this._idle = false;
|
||||||
if (!userBecameIdle)
|
this._updatePointer();
|
||||||
this._updatePointer();
|
this._updateTimeout();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onIdleMonitorBecameIdle: function(monitor) {
|
||||||
|
this._idle = true;
|
||||||
this._updateTimeout();
|
this._updateTimeout();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -904,6 +904,7 @@ const PopupMenuBase = new Lang.Class({
|
|||||||
app.activate();
|
app.activate();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
menuItem.actor.visible = Main.sessionMode.allowSettings;
|
||||||
this._settingsActions[desktopFile] = menuItem;
|
this._settingsActions[desktopFile] = menuItem;
|
||||||
|
|
||||||
return menuItem;
|
return menuItem;
|
||||||
@ -1268,13 +1269,14 @@ const PopupMenu = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
close: function(animate) {
|
close: function(animate) {
|
||||||
if (!this.isOpen)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (this._activeMenuItem)
|
if (this._activeMenuItem)
|
||||||
this._activeMenuItem.setActive(false);
|
this._activeMenuItem.setActive(false);
|
||||||
|
|
||||||
this._boxPointer.hide(animate);
|
if (this._boxPointer.actor.visible)
|
||||||
|
this._boxPointer.hide(animate);
|
||||||
|
|
||||||
|
if (!this.isOpen)
|
||||||
|
return;
|
||||||
|
|
||||||
this.isOpen = false;
|
this.isOpen = false;
|
||||||
this.emit('open-state-changed', false);
|
this.emit('open-state-changed', false);
|
||||||
|
@ -31,20 +31,37 @@ const SearchProviderIface = <interface name="org.gnome.Shell.SearchProvider">
|
|||||||
|
|
||||||
var SearchProviderProxy = Gio.DBusProxy.makeProxyWrapper(SearchProviderIface);
|
var SearchProviderProxy = Gio.DBusProxy.makeProxyWrapper(SearchProviderIface);
|
||||||
|
|
||||||
|
|
||||||
function loadRemoteSearchProviders(addProviderCallback) {
|
function loadRemoteSearchProviders(addProviderCallback) {
|
||||||
|
let loadState = { loadedProviders: [],
|
||||||
|
objectPaths: {},
|
||||||
|
numLoading: 0,
|
||||||
|
addProviderCallback: addProviderCallback };
|
||||||
|
|
||||||
let dataDirs = GLib.get_system_data_dirs();
|
let dataDirs = GLib.get_system_data_dirs();
|
||||||
let loadedProviders = {};
|
|
||||||
for (let i = 0; i < dataDirs.length; i++) {
|
for (let i = 0; i < dataDirs.length; i++) {
|
||||||
let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'search-providers']);
|
let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'search-providers']);
|
||||||
let dir = Gio.file_new_for_path(path);
|
let dir = Gio.file_new_for_path(path);
|
||||||
if (!dir.query_exists(null))
|
|
||||||
continue;
|
dir.query_info_async('standard:type', Gio.FileQueryInfoFlags.NONE,
|
||||||
loadRemoteSearchProvidersFromDir(dir, loadedProviders, addProviderCallback);
|
GLib.PRIORITY_DEFAULT, null,
|
||||||
|
function(object, res) {
|
||||||
|
let exists = false;
|
||||||
|
try {
|
||||||
|
object.query_info_finish(res);
|
||||||
|
exists = true;
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!exists)
|
||||||
|
return;
|
||||||
|
|
||||||
|
loadState.numLoading++;
|
||||||
|
loadRemoteSearchProvidersFromDir(dir, loadState);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function loadRemoteSearchProvidersFromDir(dir, loadedProviders, addProviderCallback) {
|
function loadRemoteSearchProvidersFromDir(dir, loadState) {
|
||||||
let dirPath = dir.get_path();
|
let dirPath = dir.get_path();
|
||||||
FileUtils.listDirAsync(dir, Lang.bind(this, function(files) {
|
FileUtils.listDirAsync(dir, Lang.bind(this, function(files) {
|
||||||
for (let i = 0; i < files.length; i++) {
|
for (let i = 0; i < files.length; i++) {
|
||||||
@ -60,13 +77,13 @@ function loadRemoteSearchProvidersFromDir(dir, loadedProviders, addProviderCallb
|
|||||||
if (!keyfile.has_group(KEY_FILE_GROUP))
|
if (!keyfile.has_group(KEY_FILE_GROUP))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let remoteProvider, title;
|
let remoteProvider;
|
||||||
try {
|
try {
|
||||||
let group = KEY_FILE_GROUP;
|
let group = KEY_FILE_GROUP;
|
||||||
let busName = keyfile.get_string(group, 'BusName');
|
let busName = keyfile.get_string(group, 'BusName');
|
||||||
let objectPath = keyfile.get_string(group, 'ObjectPath');
|
let objectPath = keyfile.get_string(group, 'ObjectPath');
|
||||||
|
|
||||||
if (loadedProviders[objectPath])
|
if (loadState.objectPaths[objectPath])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let appInfo = null;
|
let appInfo = null;
|
||||||
@ -74,46 +91,93 @@ function loadRemoteSearchProvidersFromDir(dir, loadedProviders, addProviderCallb
|
|||||||
let desktopId = keyfile.get_string(group, 'DesktopId');
|
let desktopId = keyfile.get_string(group, 'DesktopId');
|
||||||
appInfo = Gio.DesktopAppInfo.new(desktopId);
|
appInfo = Gio.DesktopAppInfo.new(desktopId);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
log('Ignoring search provider ' + path + ': missing DesktopId');
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
let icon;
|
remoteProvider = new RemoteSearchProvider(appInfo,
|
||||||
if (appInfo) {
|
|
||||||
icon = appInfo.get_icon();
|
|
||||||
title = appInfo.get_name();
|
|
||||||
} else {
|
|
||||||
let iconName = keyfile.get_string(group, 'Icon');
|
|
||||||
icon = new Gio.ThemedIcon({ name: iconName });
|
|
||||||
title = keyfile.get_locale_string(group, 'Title', null);
|
|
||||||
}
|
|
||||||
|
|
||||||
remoteProvider = new RemoteSearchProvider(title,
|
|
||||||
icon,
|
|
||||||
busName,
|
busName,
|
||||||
objectPath);
|
objectPath);
|
||||||
loadedProviders[objectPath] = remoteProvider;
|
loadState.objectPaths[objectPath] = remoteProvider;
|
||||||
|
loadState.loadedProviders.push(remoteProvider);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
log('Failed to add search provider "%s": %s'.format(title, e.toString()));
|
log('Failed to add search provider %s: %s'.format(path, e.toString()));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
addProviderCallback(remoteProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remoteProvidersDirLoaded(loadState);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function remoteProvidersDirLoaded(loadState) {
|
||||||
|
loadState.numLoading--;
|
||||||
|
if (loadState.numLoading > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let searchSettings = new Gio.Settings({ schema: Search.SEARCH_PROVIDERS_SCHEMA });
|
||||||
|
let sortOrder = searchSettings.get_strv('sort-order');
|
||||||
|
let numSorted = sortOrder.length;
|
||||||
|
|
||||||
|
loadState.loadedProviders.sort(
|
||||||
|
function(providerA, providerB) {
|
||||||
|
let idxA, idxB;
|
||||||
|
let appIdA, appIdB;
|
||||||
|
|
||||||
|
appIdA = providerA.appInfo.get_id();
|
||||||
|
appIdB = providerB.appInfo.get_id();
|
||||||
|
|
||||||
|
idxA = sortOrder.indexOf(appIdA);
|
||||||
|
idxB = sortOrder.indexOf(appIdB);
|
||||||
|
|
||||||
|
// if no provider is found in the order, use alphabetical order
|
||||||
|
if ((idxA == -1) && (idxB == -1))
|
||||||
|
return GLib.utf8_collate(providerA.title, providerB.title);
|
||||||
|
|
||||||
|
if (numSorted > 1) {
|
||||||
|
// if providerA is the last, it goes after everything
|
||||||
|
if ((idxA + 1) == numSorted)
|
||||||
|
return 1;
|
||||||
|
// if providerB is the last, it goes after everything
|
||||||
|
else if ((idxB + 1) == numSorted)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if providerA isn't found, it's sorted after providerB
|
||||||
|
if (idxA == -1)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
// if providerB isn't found, it's sorted after providerA
|
||||||
|
if (idxB == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// finally, if both providers are found, return their order in the list
|
||||||
|
return (idxA - idxB);
|
||||||
|
});
|
||||||
|
|
||||||
|
loadState.loadedProviders.forEach(
|
||||||
|
function(provider) {
|
||||||
|
loadState.addProviderCallback(provider);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const RemoteSearchProvider = new Lang.Class({
|
const RemoteSearchProvider = new Lang.Class({
|
||||||
Name: 'RemoteSearchProvider',
|
Name: 'RemoteSearchProvider',
|
||||||
Extends: Search.SearchProvider,
|
Extends: Search.SearchProvider,
|
||||||
|
|
||||||
_init: function(title, icon, dbusName, dbusPath) {
|
_init: function(appInfo, dbusName, dbusPath) {
|
||||||
this._proxy = new SearchProviderProxy(Gio.DBus.session,
|
this._proxy = new SearchProviderProxy(Gio.DBus.session,
|
||||||
dbusName, dbusPath);
|
dbusName, dbusPath, Lang.bind(this, this._onProxyConstructed));
|
||||||
|
|
||||||
this.parent(title.toUpperCase());
|
this.parent(appInfo.get_name().toUpperCase(), appInfo, true);
|
||||||
this._cancellable = new Gio.Cancellable();
|
this._cancellable = new Gio.Cancellable();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onProxyConstructed: function(proxy) {
|
||||||
|
// Do nothing
|
||||||
|
},
|
||||||
|
|
||||||
createIcon: function(size, meta) {
|
createIcon: function(size, meta) {
|
||||||
if (meta['gicon']) {
|
if (meta['gicon']) {
|
||||||
return new St.Icon({ gicon: Gio.icon_new_for_string(meta['gicon']),
|
return new St.Icon({ gicon: Gio.icon_new_for_string(meta['gicon']),
|
||||||
|
@ -202,11 +202,12 @@ const RunDialog = new Lang.Class({
|
|||||||
|
|
||||||
|
|
||||||
let label = new St.Label({ style_class: 'run-dialog-label',
|
let label = new St.Label({ style_class: 'run-dialog-label',
|
||||||
text: _("Please enter a command:") });
|
text: _("Enter a Command") });
|
||||||
|
|
||||||
this.contentLayout.add(label, { y_align: St.Align.START });
|
this.contentLayout.add(label, { y_align: St.Align.START });
|
||||||
|
|
||||||
let entry = new St.Entry({ style_class: 'run-dialog-entry' });
|
let entry = new St.Entry({ style_class: 'run-dialog-entry',
|
||||||
|
can_focus: true });
|
||||||
ShellEntry.addContextMenu(entry);
|
ShellEntry.addContextMenu(entry);
|
||||||
|
|
||||||
entry.label_actor = label;
|
entry.label_actor = label;
|
||||||
@ -219,7 +220,9 @@ const RunDialog = new Lang.Class({
|
|||||||
|
|
||||||
this.contentLayout.add(this._errorBox, { expand: true });
|
this.contentLayout.add(this._errorBox, { expand: true });
|
||||||
|
|
||||||
let errorIcon = new St.Icon({ icon_name: 'dialog-error', icon_size: 24, style_class: 'run-dialog-error-icon' });
|
let errorIcon = new St.Icon({ icon_name: 'dialog-error-symbolic',
|
||||||
|
icon_size: 24,
|
||||||
|
style_class: 'run-dialog-error-icon' });
|
||||||
|
|
||||||
this._errorBox.add(errorIcon, { y_align: St.Align.MIDDLE });
|
this._errorBox.add(errorIcon, { y_align: St.Align.MIDDLE });
|
||||||
|
|
||||||
@ -234,6 +237,10 @@ const RunDialog = new Lang.Class({
|
|||||||
|
|
||||||
this._errorBox.hide();
|
this._errorBox.hide();
|
||||||
|
|
||||||
|
this.setButtons([{ action: Lang.bind(this, this.close),
|
||||||
|
label: _("Close"),
|
||||||
|
key: Clutter.Escape }]);
|
||||||
|
|
||||||
this._pathCompleter = new Gio.FilenameCompleter();
|
this._pathCompleter = new Gio.FilenameCompleter();
|
||||||
this._commandCompleter = new CommandCompleter();
|
this._commandCompleter = new CommandCompleter();
|
||||||
this._group.connect('notify::visible', Lang.bind(this._commandCompleter, this._commandCompleter.update));
|
this._group.connect('notify::visible', Lang.bind(this._commandCompleter, this._commandCompleter.update));
|
||||||
@ -244,20 +251,12 @@ const RunDialog = new Lang.Class({
|
|||||||
let symbol = e.get_key_symbol();
|
let symbol = e.get_key_symbol();
|
||||||
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||||
this.popModal();
|
this.popModal();
|
||||||
if (e.get_state() & Clutter.ModifierType.CONTROL_MASK)
|
this._run(o.get_text(),
|
||||||
this._run(o.get_text(), true);
|
e.get_state() & Clutter.ModifierType.CONTROL_MASK);
|
||||||
else
|
if (!this._commandError ||
|
||||||
this._run(o.get_text(), false);
|
!this.pushModal())
|
||||||
if (!this._commandError)
|
|
||||||
this.close();
|
this.close();
|
||||||
else {
|
|
||||||
if (!this.pushModal())
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (symbol == Clutter.Escape) {
|
|
||||||
this.close();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (symbol == Clutter.slash) {
|
if (symbol == Clutter.slash) {
|
||||||
|
@ -21,11 +21,12 @@ const Overview = imports.ui.overview;
|
|||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
const ShellDBus = imports.ui.shellDBus;
|
const ShellDBus = imports.ui.shellDBus;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
const Util = imports.misc.util;
|
||||||
|
|
||||||
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
||||||
const LOCK_ENABLED_KEY = 'lock-enabled';
|
const LOCK_ENABLED_KEY = 'lock-enabled';
|
||||||
|
|
||||||
const CURTAIN_SLIDE_TIME = 0.5;
|
const CURTAIN_SLIDE_TIME = 0.3;
|
||||||
// fraction of screen height the arrow must reach before completing
|
// fraction of screen height the arrow must reach before completing
|
||||||
// the slide up automatically
|
// the slide up automatically
|
||||||
const ARROW_DRAG_THRESHOLD = 0.1;
|
const ARROW_DRAG_THRESHOLD = 0.1;
|
||||||
@ -46,7 +47,39 @@ const SUMMARY_ICON_SIZE = 48;
|
|||||||
// STANDARD_FADE_TIME is used when the session goes idle, while
|
// STANDARD_FADE_TIME is used when the session goes idle, while
|
||||||
// SHORT_FADE_TIME is used when requesting lock explicitly from the user menu
|
// SHORT_FADE_TIME is used when requesting lock explicitly from the user menu
|
||||||
const STANDARD_FADE_TIME = 10;
|
const STANDARD_FADE_TIME = 10;
|
||||||
const SHORT_FADE_TIME = 0.8;
|
const SHORT_FADE_TIME = 0.3;
|
||||||
|
|
||||||
|
function sample(offx, offy) {
|
||||||
|
return 'texel += texture2D (sampler, tex_coord.st + pixel_step * ' +
|
||||||
|
'vec2 (' + offx + ',' + offy + '));\n'
|
||||||
|
}
|
||||||
|
const GLSL_BLUR_EFFECT_DECLARATIONS = ' \
|
||||||
|
uniform vec2 pixel_step;\n \
|
||||||
|
uniform float desaturation;\n \
|
||||||
|
vec4 apply_blur(in sampler2D sampler, in vec2 tex_coord) {\n \
|
||||||
|
vec4 texel;\n \
|
||||||
|
texel = texture2D (sampler, tex_coord.st);\n'
|
||||||
|
+ sample(-1.0, -1.0)
|
||||||
|
+ sample( 0.0, -1.0)
|
||||||
|
+ sample(+1.0, -1.0)
|
||||||
|
+ sample(-1.0, 0.0)
|
||||||
|
+ sample(+1.0, 0.0)
|
||||||
|
+ sample(-1.0, +1.0)
|
||||||
|
+ sample( 0.0, +1.0)
|
||||||
|
+ sample(+1.0, +1.0) + ' \
|
||||||
|
texel /= 9.0;\n \
|
||||||
|
return texel;\n \
|
||||||
|
}\n \
|
||||||
|
vec3 desaturate (const vec3 color)\n \
|
||||||
|
{\n \
|
||||||
|
const vec3 gray_conv = vec3 (0.299, 0.587, 0.114);\n \
|
||||||
|
vec3 gray = vec3 (dot (gray_conv, color));\n \
|
||||||
|
return vec3 (mix (color.rgb, gray, desaturation));\n \
|
||||||
|
}';
|
||||||
|
const GLSL_BLUR_EFFECT_CODE = ' \
|
||||||
|
cogl_texel = apply_blur(cogl_sampler, cogl_tex_coord.st);\n \
|
||||||
|
cogl_texel.rgb = desaturate(cogl_texel.rgb);\n';
|
||||||
|
|
||||||
|
|
||||||
const Clock = new Lang.Class({
|
const Clock = new Lang.Class({
|
||||||
Name: 'ScreenShieldClock',
|
Name: 'ScreenShieldClock',
|
||||||
@ -95,13 +128,13 @@ const NotificationsBox = new Lang.Class({
|
|||||||
|
|
||||||
this._residentNotificationBox = new St.BoxLayout({ vertical: true,
|
this._residentNotificationBox = new St.BoxLayout({ vertical: true,
|
||||||
style_class: 'screen-shield-notifications-box' });
|
style_class: 'screen-shield-notifications-box' });
|
||||||
let scrollView = new St.ScrollView({ x_fill: false, x_align: St.Align.MIDDLE });
|
let scrollView = new St.ScrollView({ x_fill: false, x_align: St.Align.START });
|
||||||
this._persistentNotificationBox = new St.BoxLayout({ vertical: true,
|
this._persistentNotificationBox = new St.BoxLayout({ vertical: true,
|
||||||
style_class: 'screen-shield-notifications-box' });
|
style_class: 'screen-shield-notifications-box' });
|
||||||
scrollView.add_actor(this._persistentNotificationBox);
|
scrollView.add_actor(this._persistentNotificationBox);
|
||||||
|
|
||||||
this.actor.add(this._residentNotificationBox, { x_fill: true });
|
this.actor.add(this._residentNotificationBox, { x_fill: true });
|
||||||
this.actor.add(scrollView, { x_fill: true, x_align: St.Align.MIDDLE });
|
this.actor.add(scrollView, { x_fill: true, x_align: St.Align.START });
|
||||||
|
|
||||||
this._items = [];
|
this._items = [];
|
||||||
Main.messageTray.getSummaryItems().forEach(Lang.bind(this, function(item) {
|
Main.messageTray.getSummaryItems().forEach(Lang.bind(this, function(item) {
|
||||||
@ -126,13 +159,12 @@ const NotificationsBox = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateVisibility: function() {
|
_updateVisibility: function() {
|
||||||
if (this._residentNotificationBox.get_n_children() > 0) {
|
this._residentNotificationBox.visible = this._residentNotificationBox.get_n_children() > 0;
|
||||||
this.actor.show();
|
this._persistentNotificationBox.visible = this._persistentNotificationBox.get_children().some(function(a) {
|
||||||
return;
|
return a.visible;
|
||||||
}
|
});
|
||||||
|
|
||||||
let children = this._persistentNotificationBox.get_children();
|
this.actor.visible = this._residentNotificationBox.visible || this._persistentNotificationBox.visible;
|
||||||
this.actor.visible = children.some(function(a) { return a.visible; });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_sourceIsResident: function(source) {
|
_sourceIsResident: function(source) {
|
||||||
@ -153,7 +185,7 @@ const NotificationsBox = new Lang.Class({
|
|||||||
box.add(sourceActor.actor, { y_fill: true });
|
box.add(sourceActor.actor, { y_fill: true });
|
||||||
|
|
||||||
let textBox = new St.BoxLayout({ vertical: true });
|
let textBox = new St.BoxLayout({ vertical: true });
|
||||||
box.add(textBox);
|
box.add(textBox, { y_fill: false, y_align: St.Align.START });
|
||||||
|
|
||||||
let label = new St.Label({ text: source.title,
|
let label = new St.Label({ text: source.title,
|
||||||
style_class: 'screen-shield-notification-label' });
|
style_class: 'screen-shield-notification-label' });
|
||||||
@ -186,11 +218,11 @@ const NotificationsBox = new Lang.Class({
|
|||||||
|
|
||||||
if (obj.resident) {
|
if (obj.resident) {
|
||||||
this._residentNotificationBox.add(item.notificationStackWidget);
|
this._residentNotificationBox.add(item.notificationStackWidget);
|
||||||
item.closeButtonVisible = false;
|
item.closeButton.hide();
|
||||||
item.prepareNotificationStackForShowing();
|
item.prepareNotificationStackForShowing();
|
||||||
} else {
|
} else {
|
||||||
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(item.source);
|
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(item.source);
|
||||||
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.MIDDLE });
|
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.START });
|
||||||
}
|
}
|
||||||
|
|
||||||
obj.contentUpdatedId = item.connect('content-updated', Lang.bind(this, this._onItemContentUpdated));
|
obj.contentUpdatedId = item.connect('content-updated', Lang.bind(this, this._onItemContentUpdated));
|
||||||
@ -236,7 +268,7 @@ const NotificationsBox = new Lang.Class({
|
|||||||
this._residentNotificationBox.remove_actor(obj.item.notificationStackWidget);
|
this._residentNotificationBox.remove_actor(obj.item.notificationStackWidget);
|
||||||
|
|
||||||
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(obj.source);
|
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(obj.source);
|
||||||
this._persistentNotificationBox.add(obj.sourceBox);
|
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.START });
|
||||||
} else if (itemShouldBeResident && !obj.resident) {
|
} else if (itemShouldBeResident && !obj.resident) {
|
||||||
// make into a resident item
|
// make into a resident item
|
||||||
obj.sourceBox.destroy();
|
obj.sourceBox.destroy();
|
||||||
@ -244,7 +276,7 @@ const NotificationsBox = new Lang.Class({
|
|||||||
obj.resident = true;
|
obj.resident = true;
|
||||||
|
|
||||||
this._residentNotificationBox.add(obj.item.notificationStackWidget);
|
this._residentNotificationBox.add(obj.item.notificationStackWidget);
|
||||||
obj.item.closeButtonVisible = false;
|
obj.item.closeButton.hide();
|
||||||
obj.item.prepareNotificationStackForShowing();
|
obj.item.prepareNotificationStackForShowing();
|
||||||
} else {
|
} else {
|
||||||
// just update the counter
|
// just update the counter
|
||||||
@ -335,6 +367,10 @@ const Arrow = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function clamp(value, min, max) {
|
||||||
|
return Math.max(min, Math.min(max, value));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To test screen shield, make sure to kill gnome-screensaver.
|
* To test screen shield, make sure to kill gnome-screensaver.
|
||||||
*
|
*
|
||||||
@ -362,13 +398,25 @@ const ScreenShield = new Lang.Class({
|
|||||||
Lang.bind(this, this._onLockScreenKeyRelease));
|
Lang.bind(this, this._onLockScreenKeyRelease));
|
||||||
this._lockScreenGroup.connect('scroll-event',
|
this._lockScreenGroup.connect('scroll-event',
|
||||||
Lang.bind(this, this._onLockScreenScroll));
|
Lang.bind(this, this._onLockScreenScroll));
|
||||||
|
Main.ctrlAltTabManager.addGroup(this._lockScreenGroup, _("Lock"), 'changes-prevent-symbolic');
|
||||||
|
|
||||||
this._lockScreenContents = new St.Widget({ layout_manager: new Clutter.BinLayout(),
|
this._lockScreenContents = new St.Widget({ layout_manager: new Clutter.BinLayout(),
|
||||||
name: 'lockScreenContents' });
|
name: 'lockScreenContents' });
|
||||||
this._lockScreenContents.add_constraint(new Layout.MonitorConstraint({ primary: true }));
|
this._lockScreenContents.add_constraint(new Layout.MonitorConstraint({ primary: true }));
|
||||||
|
|
||||||
|
let backgroundActor = Meta.BackgroundActor.new_for_screen(global.screen);
|
||||||
|
backgroundActor.add_glsl_snippet(Meta.SnippetHook.TEXTURE_LOOKUP,
|
||||||
|
GLSL_BLUR_EFFECT_DECLARATIONS,
|
||||||
|
GLSL_BLUR_EFFECT_CODE,
|
||||||
|
true);
|
||||||
|
backgroundActor.set_uniform_float('desaturation',
|
||||||
|
1, 1, [0.6]);
|
||||||
|
backgroundActor.connect('notify::size', function(actor) {
|
||||||
|
actor.set_uniform_float('pixel_step', 2, 1, [1/actor.width, 1/actor.height]);
|
||||||
|
});
|
||||||
|
|
||||||
this._background = new St.Bin({ style_class: 'screen-shield-background',
|
this._background = new St.Bin({ style_class: 'screen-shield-background',
|
||||||
child: Meta.BackgroundActor.new_for_screen(global.screen) });
|
child: backgroundActor });
|
||||||
this._lockScreenGroup.add_actor(this._background);
|
this._lockScreenGroup.add_actor(this._background);
|
||||||
this._lockScreenGroup.add_actor(this._lockScreenContents);
|
this._lockScreenGroup.add_actor(this._lockScreenContents);
|
||||||
|
|
||||||
@ -387,14 +435,11 @@ const ScreenShield = new Lang.Class({
|
|||||||
}
|
}
|
||||||
this._lockScreenContents.add_actor(this._arrowContainer);
|
this._lockScreenContents.add_actor(this._arrowContainer);
|
||||||
|
|
||||||
let dragArea = new Clutter.Rect({ origin: new Clutter.Point({ x: 0, y: -global.screen_height, }),
|
this._dragAction = new Clutter.GestureAction();
|
||||||
size: new Clutter.Size({ width: global.screen_width,
|
this._dragAction.connect('gesture-begin', Lang.bind(this, this._onDragBegin));
|
||||||
height: global.screen_height }) });
|
this._dragAction.connect('gesture-progress', Lang.bind(this, this._onDragMotion));
|
||||||
let action = new Clutter.DragAction({ drag_axis: Clutter.DragAxis.Y_AXIS,
|
this._dragAction.connect('gesture-end', Lang.bind(this, this._onDragEnd));
|
||||||
drag_area: dragArea });
|
this._lockScreenGroup.add_action(this._dragAction);
|
||||||
action.connect('drag-begin', Lang.bind(this, this._onDragBegin));
|
|
||||||
action.connect('drag-end', Lang.bind(this, this._onDragEnd));
|
|
||||||
this._lockScreenGroup.add_action(action);
|
|
||||||
|
|
||||||
this._lockDialogGroup = new St.Widget({ x_expand: true,
|
this._lockDialogGroup = new St.Widget({ x_expand: true,
|
||||||
y_expand: true,
|
y_expand: true,
|
||||||
@ -429,29 +474,40 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._hasLockScreen = false;
|
this._hasLockScreen = false;
|
||||||
this._isGreeter = false;
|
this._isGreeter = false;
|
||||||
this._isActive = false;
|
this._isActive = false;
|
||||||
|
this._inUnlockAnimation = false;
|
||||||
|
this._activationTime = 0;
|
||||||
|
|
||||||
this._lightbox = new Lightbox.Lightbox(Main.uiGroup,
|
this._lightbox = new Lightbox.Lightbox(Main.uiGroup,
|
||||||
{ inhibitEvents: true,
|
{ inhibitEvents: true,
|
||||||
fadeInTime: STANDARD_FADE_TIME,
|
fadeInTime: STANDARD_FADE_TIME,
|
||||||
fadeFactor: 1 });
|
fadeFactor: 1 });
|
||||||
|
|
||||||
|
this.idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onLockScreenKeyRelease: function(actor, event) {
|
_onLockScreenKeyRelease: function(actor, event) {
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
|
|
||||||
|
// Do nothing if the lock screen is not fully shown.
|
||||||
|
// This avoids reusing the previous (and stale) unlock
|
||||||
|
// dialog if esc is pressed while the curtain is going
|
||||||
|
// down after cancel.
|
||||||
|
// Similarly, don't bump if the lock screen is not showing or is
|
||||||
|
// animating, as the bump overrides the animation and would
|
||||||
|
// remove any onComplete handler.
|
||||||
|
|
||||||
|
if (this._lockScreenState != MessageTray.State.SHOWN)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (symbol == Clutter.KEY_Escape ||
|
if (symbol == Clutter.KEY_Escape ||
|
||||||
symbol == Clutter.KEY_Return ||
|
symbol == Clutter.KEY_Return ||
|
||||||
symbol == Clutter.KEY_KP_Enter) {
|
symbol == Clutter.KEY_KP_Enter) {
|
||||||
this._ensureUnlockDialog();
|
this._ensureUnlockDialog(true);
|
||||||
this._hideLockScreen(true);
|
this._hideLockScreen(true, 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't bump if the lock screen is not showing or is
|
this._bumpLockScreen();
|
||||||
// animating, as the bump overrides the animation and would
|
|
||||||
// remove any onComplete handler
|
|
||||||
if (this._lockScreenState == MessageTray.State.SHOWN)
|
|
||||||
this._bumpLockScreen();
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -469,8 +525,8 @@ const ScreenShield = new Lang.Class({
|
|||||||
|
|
||||||
// 7 standard scrolls to lift up
|
// 7 standard scrolls to lift up
|
||||||
if (this._lockScreenScrollCounter > 35) {
|
if (this._lockScreenScrollCounter > 35) {
|
||||||
this._ensureUnlockDialog();
|
this._ensureUnlockDialog(false);
|
||||||
this._hideLockScreen(true);
|
this._hideLockScreen(true, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -501,13 +557,28 @@ const ScreenShield = new Lang.Class({
|
|||||||
_onDragBegin: function() {
|
_onDragBegin: function() {
|
||||||
Tweener.removeTweens(this._lockScreenGroup);
|
Tweener.removeTweens(this._lockScreenGroup);
|
||||||
this._lockScreenState = MessageTray.State.HIDING;
|
this._lockScreenState = MessageTray.State.HIDING;
|
||||||
this._ensureUnlockDialog();
|
this._ensureUnlockDialog(false);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDragMotion: function() {
|
||||||
|
let [origX, origY] = this._dragAction.get_press_coords(0);
|
||||||
|
let [currentX, currentY] = this._dragAction.get_motion_coords(0);
|
||||||
|
|
||||||
|
let newY = currentY - origY;
|
||||||
|
newY = clamp(newY, -global.stage.height, 0);
|
||||||
|
|
||||||
|
this._lockScreenGroup.y = newY;
|
||||||
|
|
||||||
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDragEnd: function(action, actor, eventX, eventY, modifiers) {
|
_onDragEnd: function(action, actor, eventX, eventY, modifiers) {
|
||||||
if (this._lockScreenGroup.y < -(ARROW_DRAG_THRESHOLD * global.stage.height)) {
|
if (this._lockScreenGroup.y < -(ARROW_DRAG_THRESHOLD * global.stage.height)) {
|
||||||
// Complete motion automatically
|
// Complete motion automatically
|
||||||
this._hideLockScreen(true);
|
let [velocity, velocityX, velocityY] = this._dragAction.get_velocity(0);
|
||||||
|
this._hideLockScreen(true, -velocityY);
|
||||||
} else {
|
} else {
|
||||||
// restore the lock screen to its original place
|
// restore the lock screen to its original place
|
||||||
// try to use the same speed as the normal animation
|
// try to use the same speed as the normal animation
|
||||||
@ -517,7 +588,7 @@ const ScreenShield = new Lang.Class({
|
|||||||
Tweener.addTween(this._lockScreenGroup,
|
Tweener.addTween(this._lockScreenGroup,
|
||||||
{ y: 0,
|
{ y: 0,
|
||||||
time: time,
|
time: time,
|
||||||
transition: 'linear',
|
transition: 'easeInQuad',
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
this._lockScreenGroup.fixed_position_set = false;
|
this._lockScreenGroup.fixed_position_set = false;
|
||||||
this._lockScreenState = MessageTray.State.SHOWN;
|
this._lockScreenState = MessageTray.State.SHOWN;
|
||||||
@ -536,31 +607,43 @@ const ScreenShield = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onStatusChanged: function(status) {
|
_onStatusChanged: function(status) {
|
||||||
if (status == GnomeSession.PresenceStatus.IDLE) {
|
if (status != GnomeSession.PresenceStatus.IDLE)
|
||||||
if (this._dialog) {
|
return;
|
||||||
this._dialog.cancel();
|
|
||||||
if (!this._isGreeter) {
|
if (this._dialog) {
|
||||||
this._dialog = null;
|
this._dialog.cancel();
|
||||||
|
if (!this._isGreeter) {
|
||||||
|
this._dialog = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this._isModal) {
|
||||||
|
Main.pushModal(this.actor, { keybindingMode: Main.KeybindingMode.LOCK_SCREEN });
|
||||||
|
this._isModal = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this._isActive) {
|
||||||
|
this._lightbox.show();
|
||||||
|
|
||||||
|
if (this._activationTime == 0)
|
||||||
|
this._activationTime = GLib.get_monotonic_time();
|
||||||
|
|
||||||
|
this._becameActiveId = this.idleMonitor.connect('became-active', Lang.bind(this, function() {
|
||||||
|
this.idleMonitor.disconnect(this._becameActiveId);
|
||||||
|
|
||||||
|
let lightboxWasShown = this._lightbox.shown;
|
||||||
|
this._lightbox.hide();
|
||||||
|
|
||||||
|
let shouldLock = lightboxWasShown && this._settings.get_boolean(LOCK_ENABLED_KEY);
|
||||||
|
if (shouldLock || this._isLocked) {
|
||||||
|
this.lock(false);
|
||||||
|
} else if (this._isActive) {
|
||||||
|
this.unlock();
|
||||||
}
|
}
|
||||||
}
|
}));
|
||||||
|
|
||||||
if (!this._isModal) {
|
this._isActive = true;
|
||||||
Main.pushModal(this.actor);
|
this.emit('lock-status-changed');
|
||||||
this._isModal = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this._isActive)
|
|
||||||
this._lightbox.show();
|
|
||||||
} else {
|
|
||||||
let lightboxWasShown = this._lightbox.shown;
|
|
||||||
this._lightbox.hide();
|
|
||||||
|
|
||||||
let shouldLock = lightboxWasShown && this._settings.get_boolean(LOCK_ENABLED_KEY);
|
|
||||||
if (shouldLock || this._isActive) {
|
|
||||||
this.lock(false);
|
|
||||||
} else if (this._isModal) {
|
|
||||||
this.unlock();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -578,8 +661,8 @@ const ScreenShield = new Lang.Class({
|
|||||||
|
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
this._isGreeter = Main.sessionMode.isGreeter;
|
this._isGreeter = Main.sessionMode.isGreeter;
|
||||||
this._ensureUnlockDialog();
|
this._ensureUnlockDialog(true);
|
||||||
this._hideLockScreen(false);
|
this._hideLockScreen(false, 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
_bumpLockScreen: function() {
|
_bumpLockScreen: function() {
|
||||||
@ -597,19 +680,26 @@ const ScreenShield = new Lang.Class({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_hideLockScreen: function(animate) {
|
_hideLockScreen: function(animate, velocity) {
|
||||||
this._lockScreenState = MessageTray.State.HIDING;
|
this._lockScreenState = MessageTray.State.HIDING;
|
||||||
|
|
||||||
if (animate) {
|
if (animate) {
|
||||||
// Tween the lock screen out of screen
|
// Tween the lock screen out of screen
|
||||||
// try to use the same speed regardless of original position
|
// if velocity is not specified (i.e. we come here from pressing ESC),
|
||||||
|
// use the same speed regardless of original position
|
||||||
|
// if velocity is specified, it's in pixels per milliseconds
|
||||||
let h = global.stage.height;
|
let h = global.stage.height;
|
||||||
let time = CURTAIN_SLIDE_TIME * (h + this._lockScreenGroup.y) / h;
|
let delta = (h + this._lockScreenGroup.y);
|
||||||
|
let min_velocity = global.stage.height / (CURTAIN_SLIDE_TIME * 1000);
|
||||||
|
|
||||||
|
velocity = Math.max(min_velocity, velocity);
|
||||||
|
let time = (delta / velocity) / 1000;
|
||||||
|
|
||||||
Tweener.removeTweens(this._lockScreenGroup);
|
Tweener.removeTweens(this._lockScreenGroup);
|
||||||
Tweener.addTween(this._lockScreenGroup,
|
Tweener.addTween(this._lockScreenGroup,
|
||||||
{ y: -h,
|
{ y: -h,
|
||||||
time: time,
|
time: time,
|
||||||
transition: 'linear',
|
transition: 'easeInQuad',
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
this._lockScreenState = MessageTray.State.HIDDEN;
|
this._lockScreenState = MessageTray.State.HIDDEN;
|
||||||
this._lockScreenGroup.hide();
|
this._lockScreenGroup.hide();
|
||||||
@ -621,22 +711,27 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._lockScreenGroup.hide();
|
this._lockScreenGroup.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
global.stage.show_cursor();
|
||||||
|
|
||||||
if (Main.sessionMode.currentMode == 'lock-screen')
|
if (Main.sessionMode.currentMode == 'lock-screen')
|
||||||
Main.sessionMode.popMode('lock-screen');
|
Main.sessionMode.popMode('lock-screen');
|
||||||
},
|
},
|
||||||
|
|
||||||
_ensureUnlockDialog: function() {
|
_ensureUnlockDialog: function(onPrimary) {
|
||||||
if (!this._dialog) {
|
if (!this._dialog) {
|
||||||
let constructor = Main.sessionMode.unlockDialog;
|
let constructor = Main.sessionMode.unlockDialog;
|
||||||
this._dialog = new constructor(this._lockDialogGroup);
|
if (!constructor) {
|
||||||
if (!this._dialog) {
|
|
||||||
// This session mode has no locking capabilities
|
// This session mode has no locking capabilities
|
||||||
this.unlock();
|
this.unlock();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._dialog = new constructor(this._lockDialogGroup);
|
||||||
|
|
||||||
|
|
||||||
|
let time = global.get_current_time();
|
||||||
this._dialog.connect('loaded', Lang.bind(this, function() {
|
this._dialog.connect('loaded', Lang.bind(this, function() {
|
||||||
if (!this._dialog.open()) {
|
if (!this._dialog.open(time, onPrimary)) {
|
||||||
log('Could not open login dialog: failed to acquire grab');
|
log('Could not open login dialog: failed to acquire grab');
|
||||||
this.unlock();
|
this.unlock();
|
||||||
}
|
}
|
||||||
@ -669,7 +764,7 @@ const ScreenShield = new Lang.Class({
|
|||||||
Tweener.addTween(this._lockScreenGroup,
|
Tweener.addTween(this._lockScreenGroup,
|
||||||
{ y: 0,
|
{ y: 0,
|
||||||
time: SHORT_FADE_TIME,
|
time: SHORT_FADE_TIME,
|
||||||
transition: 'linear',
|
transition: 'easeOutQuad',
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
this._lockScreenShown();
|
this._lockScreenShown();
|
||||||
},
|
},
|
||||||
@ -708,6 +803,16 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._arrowAnimationId = Mainloop.timeout_add(6000, Lang.bind(this, this._animateArrows));
|
this._arrowAnimationId = Mainloop.timeout_add(6000, Lang.bind(this, this._animateArrows));
|
||||||
this._animateArrows();
|
this._animateArrows();
|
||||||
|
|
||||||
|
let motionId = global.stage.connect('captured-event', function(stage, event) {
|
||||||
|
if (event.type() == Clutter.EventType.MOTION) {
|
||||||
|
global.stage.show_cursor();
|
||||||
|
global.stage.disconnect(motionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
global.stage.hide_cursor();
|
||||||
|
|
||||||
this._lockScreenState = MessageTray.State.SHOWN;
|
this._lockScreenState = MessageTray.State.SHOWN;
|
||||||
this._lockScreenGroup.fixed_position_set = false;
|
this._lockScreenGroup.fixed_position_set = false;
|
||||||
this._lockScreenScrollCounter = 0;
|
this._lockScreenScrollCounter = 0;
|
||||||
@ -725,7 +830,8 @@ const ScreenShield = new Lang.Class({
|
|||||||
y_align: Clutter.ActorAlign.CENTER,
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
x_expand: true,
|
x_expand: true,
|
||||||
y_expand: true,
|
y_expand: true,
|
||||||
vertical: true });
|
vertical: true,
|
||||||
|
style_class: 'screen-shield-contents-box' });
|
||||||
this._clock = new Clock();
|
this._clock = new Clock();
|
||||||
this._lockScreenContentsBox.add(this._clock.actor, { x_fill: true,
|
this._lockScreenContentsBox.add(this._clock.actor, { x_fill: true,
|
||||||
y_fill: true });
|
y_fill: true });
|
||||||
@ -765,7 +871,12 @@ const ScreenShield = new Lang.Class({
|
|||||||
return this._isActive;
|
return this._isActive;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get activationTime() {
|
||||||
|
return this._activationTime;
|
||||||
|
},
|
||||||
|
|
||||||
_tweenUnlocked: function() {
|
_tweenUnlocked: function() {
|
||||||
|
this._inUnlockAnimation = true;
|
||||||
this.unlock();
|
this.unlock();
|
||||||
Tweener.addTween(this._lockDialogGroup, {
|
Tweener.addTween(this._lockDialogGroup, {
|
||||||
scale_x: 0,
|
scale_x: 0,
|
||||||
@ -778,6 +889,7 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._dialog = null;
|
this._dialog = null;
|
||||||
}
|
}
|
||||||
this.actor.hide();
|
this.actor.hide();
|
||||||
|
this._inUnlockAnimation = false;
|
||||||
},
|
},
|
||||||
onCompleteScope: this
|
onCompleteScope: this
|
||||||
});
|
});
|
||||||
@ -799,23 +911,29 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._isModal = false;
|
this._isModal = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.actor.hide();
|
if (!this._inUnlockAnimation)
|
||||||
|
this.actor.hide();
|
||||||
|
|
||||||
if (Main.sessionMode.currentMode == 'lock-screen')
|
if (Main.sessionMode.currentMode == 'lock-screen')
|
||||||
Main.sessionMode.popMode('lock-screen');
|
Main.sessionMode.popMode('lock-screen');
|
||||||
if (Main.sessionMode.currentMode == 'unlock-dialog')
|
if (Main.sessionMode.currentMode == 'unlock-dialog')
|
||||||
Main.sessionMode.popMode('unlock-dialog');
|
Main.sessionMode.popMode('unlock-dialog');
|
||||||
|
|
||||||
|
this._activationTime = 0;
|
||||||
this._isActive = false;
|
this._isActive = false;
|
||||||
|
this._isLocked = false;
|
||||||
this.emit('lock-status-changed');
|
this.emit('lock-status-changed');
|
||||||
},
|
},
|
||||||
|
|
||||||
lock: function(animate) {
|
lock: function(animate) {
|
||||||
if (!this._isModal) {
|
if (!this._isModal) {
|
||||||
Main.pushModal(this.actor);
|
Main.pushModal(this.actor, { keybindingMode: Main.KeybindingMode.LOCK_SCREEN });
|
||||||
this._isModal = true;
|
this._isModal = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this._activationTime == 0)
|
||||||
|
this._activationTime = GLib.get_monotonic_time();
|
||||||
|
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
|
|
||||||
if (Main.sessionMode.currentMode != 'unlock-dialog' &&
|
if (Main.sessionMode.currentMode != 'unlock-dialog' &&
|
||||||
@ -828,6 +946,7 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._resetLockScreen(animate, animate);
|
this._resetLockScreen(animate, animate);
|
||||||
|
|
||||||
this._isActive = true;
|
this._isActive = true;
|
||||||
|
this._isLocked = true;
|
||||||
this.emit('lock-status-changed');
|
this.emit('lock-status-changed');
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -840,6 +959,8 @@ const ScreenShieldFallback = new Lang.Class({
|
|||||||
Name: 'ScreenShieldFallback',
|
Name: 'ScreenShieldFallback',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
|
Util.spawn(['gnome-screensaver']);
|
||||||
|
|
||||||
this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
|
this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
|
||||||
g_name: 'org.gnome.ScreenSaver',
|
g_name: 'org.gnome.ScreenSaver',
|
||||||
g_object_path: '/org/gnome/ScreenSaver',
|
g_object_path: '/org/gnome/ScreenSaver',
|
||||||
|
@ -10,6 +10,8 @@ const Util = imports.misc.util;
|
|||||||
const FileUtils = imports.misc.fileUtils;
|
const FileUtils = imports.misc.fileUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
|
const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers';
|
||||||
|
|
||||||
// Not currently referenced by the search API, but
|
// Not currently referenced by the search API, but
|
||||||
// this enumeration can be useful for provider
|
// this enumeration can be useful for provider
|
||||||
// implementations.
|
// implementations.
|
||||||
@ -74,9 +76,11 @@ const SearchResultDisplay = new Lang.Class({
|
|||||||
const SearchProvider = new Lang.Class({
|
const SearchProvider = new Lang.Class({
|
||||||
Name: 'SearchProvider',
|
Name: 'SearchProvider',
|
||||||
|
|
||||||
_init: function(title) {
|
_init: function(title, appInfo, isRemoteProvider) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
|
this.appInfo = appInfo;
|
||||||
this.searchSystem = null;
|
this.searchSystem = null;
|
||||||
|
this.isRemoteProvider = !!isRemoteProvider;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -172,12 +176,16 @@ const SearchSystem = new Lang.Class({
|
|||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._providers = [];
|
this._providers = [];
|
||||||
|
this._remoteProviders = [];
|
||||||
this.reset();
|
this.reset();
|
||||||
},
|
},
|
||||||
|
|
||||||
registerProvider: function (provider) {
|
registerProvider: function (provider) {
|
||||||
provider.searchSystem = this;
|
provider.searchSystem = this;
|
||||||
this._providers.push(provider);
|
this._providers.push(provider);
|
||||||
|
|
||||||
|
if (provider.isRemoteProvider)
|
||||||
|
this._remoteProviders.push(provider);
|
||||||
},
|
},
|
||||||
|
|
||||||
unregisterProvider: function (provider) {
|
unregisterProvider: function (provider) {
|
||||||
@ -186,12 +194,20 @@ const SearchSystem = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
provider.searchSystem = null;
|
provider.searchSystem = null;
|
||||||
this._providers.splice(index, 1);
|
this._providers.splice(index, 1);
|
||||||
|
|
||||||
|
let remoteIndex = this._remoteProviders.indexOf(provider);
|
||||||
|
if (remoteIndex != -1)
|
||||||
|
this._remoteProviders.splice(index, 1);
|
||||||
},
|
},
|
||||||
|
|
||||||
getProviders: function() {
|
getProviders: function() {
|
||||||
return this._providers;
|
return this._providers;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getRemoteProviders: function() {
|
||||||
|
return this._remoteProviders;
|
||||||
|
},
|
||||||
|
|
||||||
getTerms: function() {
|
getTerms: function() {
|
||||||
return this._previousTerms;
|
return this._previousTerms;
|
||||||
},
|
},
|
||||||
|
@ -224,7 +224,7 @@ const SearchResults = new Lang.Class({
|
|||||||
vertical: true });
|
vertical: true });
|
||||||
let title = new St.Label({ style_class: 'search-section-header',
|
let title = new St.Label({ style_class: 'search-section-header',
|
||||||
text: provider.title });
|
text: provider.title });
|
||||||
providerBox.add(title);
|
providerBox.add(title, { x_fill: false, x_align: St.Align.START });
|
||||||
|
|
||||||
let resultDisplayBin = new St.Bin({ style_class: 'search-section-results',
|
let resultDisplayBin = new St.Bin({ style_class: 'search-section-results',
|
||||||
x_fill: true,
|
x_fill: true,
|
||||||
|
@ -14,7 +14,6 @@ const _modes = {
|
|||||||
showCalendarEvents: false,
|
showCalendarEvents: false,
|
||||||
allowSettings: false,
|
allowSettings: false,
|
||||||
allowExtensions: false,
|
allowExtensions: false,
|
||||||
allowKeybindingsWhenModal: false,
|
|
||||||
hasRunDialog: false,
|
hasRunDialog: false,
|
||||||
hasWorkspaces: false,
|
hasWorkspaces: false,
|
||||||
hasWindows: false,
|
hasWindows: false,
|
||||||
@ -32,14 +31,13 @@ const _modes = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
'gdm': {
|
'gdm': {
|
||||||
allowKeybindingsWhenModal: true,
|
|
||||||
hasNotifications: true,
|
hasNotifications: true,
|
||||||
isGreeter: true,
|
isGreeter: true,
|
||||||
isPrimary: true,
|
isPrimary: true,
|
||||||
unlockDialog: imports.gdm.loginDialog.LoginDialog,
|
unlockDialog: imports.gdm.loginDialog.LoginDialog,
|
||||||
components: ['polkitAgent'],
|
components: ['polkitAgent'],
|
||||||
panel: {
|
panel: {
|
||||||
left: [],
|
left: ['logo'],
|
||||||
center: ['dateMenu'],
|
center: ['dateMenu'],
|
||||||
right: ['a11y', 'display', 'keyboard',
|
right: ['a11y', 'display', 'keyboard',
|
||||||
'volume', 'battery', 'powerMenu']
|
'volume', 'battery', 'powerMenu']
|
||||||
@ -50,7 +48,7 @@ const _modes = {
|
|||||||
isLocked: true,
|
isLocked: true,
|
||||||
isGreeter: undefined,
|
isGreeter: undefined,
|
||||||
unlockDialog: undefined,
|
unlockDialog: undefined,
|
||||||
components: ['networkAgent', 'polkitAgent', 'telepathyClient'],
|
components: ['polkitAgent', 'telepathyClient'],
|
||||||
panel: {
|
panel: {
|
||||||
left: ['userMenu'],
|
left: ['userMenu'],
|
||||||
center: [],
|
center: [],
|
||||||
@ -61,7 +59,7 @@ const _modes = {
|
|||||||
'unlock-dialog': {
|
'unlock-dialog': {
|
||||||
isLocked: true,
|
isLocked: true,
|
||||||
unlockDialog: undefined,
|
unlockDialog: undefined,
|
||||||
components: ['networkAgent', 'polkitAgent', 'telepathyClient'],
|
components: ['polkitAgent', 'telepathyClient'],
|
||||||
panel: {
|
panel: {
|
||||||
left: ['userMenu'],
|
left: ['userMenu'],
|
||||||
center: [],
|
center: [],
|
||||||
|
@ -57,7 +57,10 @@ const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
|
|||||||
<arg name="active" direction="out" type="b" />
|
<arg name="active" direction="out" type="b" />
|
||||||
</method>
|
</method>
|
||||||
<method name="SetActive">
|
<method name="SetActive">
|
||||||
<arg name="value" direction="in" type="u" />
|
<arg name="value" direction="in" type="b" />
|
||||||
|
</method>
|
||||||
|
<method name="GetActiveTime">
|
||||||
|
<arg name="value" direction="out" type="u" />
|
||||||
</method>
|
</method>
|
||||||
<signal name="ActiveChanged">
|
<signal name="ActiveChanged">
|
||||||
<arg name="new_value" type="b" />
|
<arg name="new_value" type="b" />
|
||||||
@ -373,5 +376,13 @@ const ScreenSaverDBus = new Lang.Class({
|
|||||||
|
|
||||||
GetActive: function() {
|
GetActive: function() {
|
||||||
return this._screenShield.locked;
|
return this._screenShield.locked;
|
||||||
}
|
},
|
||||||
|
|
||||||
|
GetActiveTime: function() {
|
||||||
|
let started = this._screenShield.activationTime;
|
||||||
|
if (started > 0)
|
||||||
|
return Math.floor((GLib.get_monotonic_time() - started) / 1000000);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
@ -27,6 +27,7 @@ const KEY_VISUAL_BELL = 'visual-bell';
|
|||||||
const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
|
const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
|
||||||
const KEY_GTK_THEME = 'gtk-theme';
|
const KEY_GTK_THEME = 'gtk-theme';
|
||||||
const KEY_ICON_THEME = 'icon-theme';
|
const KEY_ICON_THEME = 'icon-theme';
|
||||||
|
const KEY_WM_THEME = 'theme';
|
||||||
const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor';
|
const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor';
|
||||||
|
|
||||||
const HIGH_CONTRAST_THEME = 'HighContrast';
|
const HIGH_CONTRAST_THEME = 'HighContrast';
|
||||||
@ -101,28 +102,35 @@ const ATIndicator = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_buildHCItem: function() {
|
_buildHCItem: function() {
|
||||||
let settings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
|
let interfaceSettings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
|
||||||
let gtkTheme = settings.get_string(KEY_GTK_THEME);
|
let wmSettings = new Gio.Settings({ schema: WM_SCHEMA });
|
||||||
let iconTheme = settings.get_string(KEY_ICON_THEME);
|
let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||||
|
let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||||
|
let wmTheme = wmSettings.get_string(KEY_WM_THEME);
|
||||||
let hasHC = (gtkTheme == HIGH_CONTRAST_THEME);
|
let hasHC = (gtkTheme == HIGH_CONTRAST_THEME);
|
||||||
let highContrast = this._buildItemExtended(
|
let highContrast = this._buildItemExtended(
|
||||||
_("High Contrast"),
|
_("High Contrast"),
|
||||||
hasHC,
|
hasHC,
|
||||||
settings.is_writable(KEY_GTK_THEME) && settings.is_writable(KEY_ICON_THEME),
|
interfaceSettings.is_writable(KEY_GTK_THEME) &&
|
||||||
|
interfaceSettings.is_writable(KEY_ICON_THEME) &&
|
||||||
|
wmSettings.is_writable(KEY_WM_THEME),
|
||||||
function (enabled) {
|
function (enabled) {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
settings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
|
interfaceSettings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
|
||||||
settings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
|
interfaceSettings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
|
||||||
|
wmSettings.set_string(KEY_WM_THEME, HIGH_CONTRAST_THEME);
|
||||||
} else if(!hasHC) {
|
} else if(!hasHC) {
|
||||||
settings.set_string(KEY_GTK_THEME, gtkTheme);
|
interfaceSettings.set_string(KEY_GTK_THEME, gtkTheme);
|
||||||
settings.set_string(KEY_ICON_THEME, iconTheme);
|
interfaceSettings.set_string(KEY_ICON_THEME, iconTheme);
|
||||||
|
wmSettings.set_string(KEY_WM_THEME, wmTheme);
|
||||||
} else {
|
} else {
|
||||||
settings.reset(KEY_GTK_THEME);
|
interfaceSettings.reset(KEY_GTK_THEME);
|
||||||
settings.reset(KEY_ICON_THEME);
|
interfaceSettings.reset(KEY_ICON_THEME);
|
||||||
|
wmSettings.reset(KEY_WM_THEME);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
settings.connect('changed::' + KEY_GTK_THEME, function() {
|
interfaceSettings.connect('changed::' + KEY_GTK_THEME, function() {
|
||||||
let value = settings.get_string(KEY_GTK_THEME);
|
let value = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||||
if (value == HIGH_CONTRAST_THEME) {
|
if (value == HIGH_CONTRAST_THEME) {
|
||||||
highContrast.setToggleState(true);
|
highContrast.setToggleState(true);
|
||||||
} else {
|
} else {
|
||||||
@ -130,11 +138,16 @@ const ATIndicator = new Lang.Class({
|
|||||||
gtkTheme = value;
|
gtkTheme = value;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
settings.connect('changed::' + KEY_ICON_THEME, function() {
|
interfaceSettings.connect('changed::' + KEY_ICON_THEME, function() {
|
||||||
let value = settings.get_string(KEY_ICON_THEME);
|
let value = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||||
if (value != HIGH_CONTRAST_THEME)
|
if (value != HIGH_CONTRAST_THEME)
|
||||||
iconTheme = value;
|
iconTheme = value;
|
||||||
});
|
});
|
||||||
|
wmSettings.connect('changed::' + KEY_WM_THEME, function() {
|
||||||
|
let value = wmSettings.get_string(KEY_WM_THEME);
|
||||||
|
if (value != HIGH_CONTRAST_THEME)
|
||||||
|
wmTheme = value;
|
||||||
|
});
|
||||||
return highContrast;
|
return highContrast;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -239,22 +239,6 @@ const Indicator = new Lang.Class({
|
|||||||
this._applet.send_to_address(device.bdaddr, device.alias);
|
this._applet.send_to_address(device.bdaddr, device.alias);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_FILE_TRANSFER) {
|
|
||||||
item.menu.addAction(_("Browse Files..."), Lang.bind(this, function(event) {
|
|
||||||
this._applet.browse_address(device.bdaddr, event.get_time(),
|
|
||||||
Lang.bind(this, function(applet, result) {
|
|
||||||
try {
|
|
||||||
applet.browse_address_finish(result);
|
|
||||||
} catch (e) {
|
|
||||||
this._ensureSource();
|
|
||||||
this._source.notify(new MessageTray.Notification(this._source,
|
|
||||||
_("Bluetooth"),
|
|
||||||
_("Error browsing device"),
|
|
||||||
{ body: _("The requested device cannot be browsed, error is '%s'").format(e) }));
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (device.type) {
|
switch (device.type) {
|
||||||
case GnomeBluetoothApplet.Type.KEYBOARD:
|
case GnomeBluetoothApplet.Type.KEYBOARD:
|
||||||
@ -369,6 +353,7 @@ const ConfirmNotification = new Lang.Class({
|
|||||||
_init: function(source, applet, device_path, name, long_name, pin) {
|
_init: function(source, applet, device_path, name, long_name, pin) {
|
||||||
this.parent(source,
|
this.parent(source,
|
||||||
_("Bluetooth"),
|
_("Bluetooth"),
|
||||||
|
/* Translators: argument is the device short name */
|
||||||
_("Pairing confirmation for %s").format(name),
|
_("Pairing confirmation for %s").format(name),
|
||||||
{ customContent: true });
|
{ customContent: true });
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
@ -378,6 +363,7 @@ const ConfirmNotification = new Lang.Class({
|
|||||||
this.addBody(_("Device %s wants to pair with this computer").format(long_name));
|
this.addBody(_("Device %s wants to pair with this computer").format(long_name));
|
||||||
this.addBody(_("Please confirm whether the PIN '%06d' matches the one on the device.").format(pin));
|
this.addBody(_("Please confirm whether the PIN '%06d' matches the one on the device.").format(pin));
|
||||||
|
|
||||||
|
/* Translators: this is the verb, not the noun */
|
||||||
this.addButton('matches', _("Matches"));
|
this.addButton('matches', _("Matches"));
|
||||||
this.addButton('does-not-match', _("Does not match"));
|
this.addButton('does-not-match', _("Does not match"));
|
||||||
|
|
||||||
|
@ -177,6 +177,7 @@ const LayoutMenuItem = new Lang.Class({
|
|||||||
this.indicator = new St.Label({ text: shortName });
|
this.indicator = new St.Label({ text: shortName });
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
this.addActor(this.indicator);
|
this.addActor(this.indicator);
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -237,7 +238,7 @@ const InputSourceIndicator = new Lang.Class({
|
|||||||
// but at least for now it is used as "allow popping up windows
|
// but at least for now it is used as "allow popping up windows
|
||||||
// from shell menus"; we can always add a separate sessionMode
|
// from shell menus"; we can always add a separate sessionMode
|
||||||
// option if need arises.
|
// option if need arises.
|
||||||
this._showLayoutItem.visible = Main.sessionMode.allowSettings;
|
this._showLayoutItem.actor.visible = Main.sessionMode.allowSettings;
|
||||||
},
|
},
|
||||||
|
|
||||||
_currentInputSourceChanged: function() {
|
_currentInputSourceChanged: function() {
|
||||||
|
@ -5,6 +5,7 @@ const Gio = imports.gi.Gio;
|
|||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const NetworkManager = imports.gi.NetworkManager;
|
const NetworkManager = imports.gi.NetworkManager;
|
||||||
const NMClient = imports.gi.NMClient;
|
const NMClient = imports.gi.NMClient;
|
||||||
|
const NMGtk = imports.gi.NMGtk;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
@ -139,46 +140,6 @@ const NMNetworkMenuItem = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const NMWiredSectionTitleMenuItem = new Lang.Class({
|
|
||||||
Name: 'NMWiredSectionTitleMenuItem',
|
|
||||||
Extends: PopupMenu.PopupSwitchMenuItem,
|
|
||||||
|
|
||||||
_init: function(label, params) {
|
|
||||||
params = params || { };
|
|
||||||
params.style_class = 'popup-subtitle-menu-item';
|
|
||||||
this.parent(label, false, params);
|
|
||||||
},
|
|
||||||
|
|
||||||
updateForDevice: function(device) {
|
|
||||||
if (device) {
|
|
||||||
this._device = device;
|
|
||||||
this.setStatus(device.getStatusLabel());
|
|
||||||
this.setToggleState(device.connected);
|
|
||||||
} else
|
|
||||||
this.setStatus('');
|
|
||||||
},
|
|
||||||
|
|
||||||
activate: function(event) {
|
|
||||||
this.parent(event);
|
|
||||||
|
|
||||||
if (!this._device) {
|
|
||||||
log('Section title activated when there is more than one device, should be non reactive');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let newState = this._switch.state;
|
|
||||||
|
|
||||||
let ok;
|
|
||||||
if (newState)
|
|
||||||
ok = this._device.activate();
|
|
||||||
else
|
|
||||||
ok = this._device.deactivate();
|
|
||||||
|
|
||||||
if (!ok)
|
|
||||||
this._switch.setToggleState(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const NMWirelessSectionTitleMenuItem = new Lang.Class({
|
const NMWirelessSectionTitleMenuItem = new Lang.Class({
|
||||||
Name: 'NMWirelessSectionTitleMenuItem',
|
Name: 'NMWirelessSectionTitleMenuItem',
|
||||||
Extends: PopupMenu.PopupSwitchMenuItem,
|
Extends: PopupMenu.PopupSwitchMenuItem,
|
||||||
@ -233,20 +194,11 @@ const NMWirelessSectionTitleMenuItem = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const NMDevice = new Lang.Class({
|
const NMConnectionBased = new Lang.Class({
|
||||||
Name: 'NMDevice',
|
Name: 'NMConnectionBased',
|
||||||
Abstract: true,
|
Abstract: true,
|
||||||
|
|
||||||
_init: function(client, device, connections) {
|
_init: function(connections) {
|
||||||
this.device = device;
|
|
||||||
if (device) {
|
|
||||||
this.device._delegate = this;
|
|
||||||
this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
|
|
||||||
} else
|
|
||||||
this._stateChangedId = 0;
|
|
||||||
|
|
||||||
// protected
|
|
||||||
this._client = client;
|
|
||||||
this._connections = [ ];
|
this._connections = [ ];
|
||||||
for (let i = 0; i < connections.length; i++) {
|
for (let i = 0; i < connections.length; i++) {
|
||||||
if (!connections[i].get_uuid())
|
if (!connections[i].get_uuid())
|
||||||
@ -264,26 +216,115 @@ const NMDevice = new Lang.Class({
|
|||||||
this._connections.push(obj);
|
this._connections.push(obj);
|
||||||
}
|
}
|
||||||
this._connections.sort(this._connectionSortFunction);
|
this._connections.sort(this._connectionSortFunction);
|
||||||
|
},
|
||||||
|
|
||||||
|
checkConnection: function(connection) {
|
||||||
|
let pos = this._findConnection(connection.get_uuid());
|
||||||
|
let exists = pos != -1;
|
||||||
|
let valid = this.connectionValid(connection);
|
||||||
|
let similar = false;
|
||||||
|
if (exists) {
|
||||||
|
let existing = this._connections[pos];
|
||||||
|
|
||||||
|
// Check if connection changed name or id
|
||||||
|
similar = existing.name == connection.get_id() &&
|
||||||
|
existing.timestamp == connection._timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists && valid && similar) {
|
||||||
|
// Nothing to do
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists)
|
||||||
|
this.removeConnection(connection);
|
||||||
|
if (valid)
|
||||||
|
this.addConnection(connection);
|
||||||
|
},
|
||||||
|
|
||||||
|
addConnection: function(connection) {
|
||||||
|
// record the connection
|
||||||
|
let obj = {
|
||||||
|
connection: connection,
|
||||||
|
name: connection.get_id(),
|
||||||
|
uuid: connection.get_uuid(),
|
||||||
|
timestamp: connection._timestamp,
|
||||||
|
item: null,
|
||||||
|
};
|
||||||
|
Util.insertSorted(this._connections, obj, this._connectionSortFunction);
|
||||||
|
|
||||||
|
this._queueCreateSection();
|
||||||
|
},
|
||||||
|
|
||||||
|
removeConnection: function(connection) {
|
||||||
|
let pos = this._findConnection(connection.get_uuid());
|
||||||
|
if (pos == -1) {
|
||||||
|
// this connection was never added, nothing to do here
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let obj = this._connections[pos];
|
||||||
|
if (obj.item)
|
||||||
|
obj.item.destroy();
|
||||||
|
this._connections.splice(pos, 1);
|
||||||
|
|
||||||
|
if (this._connections.length <= 1) {
|
||||||
|
// We need to show the automatic connection again
|
||||||
|
// (or in the case of NMDeviceWired, we want to hide
|
||||||
|
// the only explicit connection)
|
||||||
|
this._queueCreateSection();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_findConnection: function(uuid) {
|
||||||
|
for (let i = 0; i < this._connections.length; i++) {
|
||||||
|
let obj = this._connections[i];
|
||||||
|
if (obj.uuid == uuid)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
},
|
||||||
|
|
||||||
|
_connectionSortFunction: function(one, two) {
|
||||||
|
if (one.timestamp == two.timestamp)
|
||||||
|
return GLib.utf8_collate(one.name, two.name);
|
||||||
|
|
||||||
|
return two.timestamp - one.timestamp;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(NMConnectionBased.prototype);
|
||||||
|
|
||||||
|
const NMDevice = new Lang.Class({
|
||||||
|
Name: 'NMDevice',
|
||||||
|
Abstract: true,
|
||||||
|
Extends: NMConnectionBased,
|
||||||
|
|
||||||
|
_init: function(client, device, connections) {
|
||||||
|
this.device = device;
|
||||||
|
this.device._delegate = this;
|
||||||
|
this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
|
||||||
|
|
||||||
|
// protected
|
||||||
|
this._client = client;
|
||||||
|
this.parent(connections);
|
||||||
this._activeConnection = null;
|
this._activeConnection = null;
|
||||||
this._activeConnectionItem = null;
|
this._activeConnectionItem = null;
|
||||||
this._autoConnectionItem = null;
|
this._autoConnectionItem = null;
|
||||||
this._overflowItem = null;
|
this._overflowItem = null;
|
||||||
|
|
||||||
if (this.device) {
|
this.statusItem = new PopupMenu.PopupSwitchMenuItem('', this.connected, { style_class: 'popup-subtitle-menu-item' });
|
||||||
this.statusItem = new PopupMenu.PopupSwitchMenuItem(this._getDescription(), this.connected, { style_class: 'popup-subtitle-menu-item' });
|
this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
|
||||||
this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
|
let ok;
|
||||||
let ok;
|
if (state)
|
||||||
if (state)
|
ok = this.activate();
|
||||||
ok = this.activate();
|
else
|
||||||
else
|
ok = this.deactivate();
|
||||||
ok = this.deactivate();
|
|
||||||
|
|
||||||
if (!ok)
|
if (!ok)
|
||||||
item.setToggleState(!state);
|
item.setToggleState(!state);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._updateStatusItem();
|
this._updateStatusItem();
|
||||||
}
|
|
||||||
this.section = new PopupMenu.PopupMenuSection();
|
this.section = new PopupMenu.PopupMenuSection();
|
||||||
|
|
||||||
this._deferredWorkId = Main.initializeDeferredWork(this.section.actor, Lang.bind(this, this._createSection));
|
this._deferredWorkId = Main.initializeDeferredWork(this.section.actor, Lang.bind(this, this._createSection));
|
||||||
@ -352,6 +393,10 @@ const NMDevice = new Lang.Class({
|
|||||||
return this.device.state == NetworkManager.DeviceState.ACTIVATED;
|
return this.device.state == NetworkManager.DeviceState.ACTIVATED;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
clearActiveConnection: function(activeConnection) {
|
||||||
|
this.setActiveConnection(null);
|
||||||
|
},
|
||||||
|
|
||||||
setActiveConnection: function(activeConnection) {
|
setActiveConnection: function(activeConnection) {
|
||||||
if (activeConnection == this._activeConnection)
|
if (activeConnection == this._activeConnection)
|
||||||
// nothing to do
|
// nothing to do
|
||||||
@ -369,80 +414,13 @@ const NMDevice = new Lang.Class({
|
|||||||
this._queueCreateSection();
|
this._queueCreateSection();
|
||||||
},
|
},
|
||||||
|
|
||||||
checkConnection: function(connection) {
|
|
||||||
let pos = this._findConnection(connection.get_uuid());
|
|
||||||
let exists = pos != -1;
|
|
||||||
let valid = this.connectionValid(connection);
|
|
||||||
let similar = false;
|
|
||||||
if (exists) {
|
|
||||||
let existing = this._connections[pos];
|
|
||||||
|
|
||||||
// Check if connection changed name or id
|
|
||||||
similar = existing.name == connection.get_id() &&
|
|
||||||
existing.timestamp == connection._timestamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exists && valid && similar) {
|
|
||||||
// Nothing to do
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exists)
|
|
||||||
this.removeConnection(connection);
|
|
||||||
if (valid)
|
|
||||||
this.addConnection(connection);
|
|
||||||
},
|
|
||||||
|
|
||||||
addConnection: function(connection) {
|
|
||||||
// record the connection
|
|
||||||
let obj = {
|
|
||||||
connection: connection,
|
|
||||||
name: connection.get_id(),
|
|
||||||
uuid: connection.get_uuid(),
|
|
||||||
timestamp: connection._timestamp,
|
|
||||||
item: null,
|
|
||||||
};
|
|
||||||
Util.insertSorted(this._connections, obj, this._connectionSortFunction);
|
|
||||||
|
|
||||||
this._clearSection();
|
|
||||||
this._queueCreateSection();
|
|
||||||
},
|
|
||||||
|
|
||||||
removeConnection: function(connection) {
|
|
||||||
let pos = this._findConnection(connection.get_uuid());
|
|
||||||
if (pos == -1) {
|
|
||||||
// this connection was never added, nothing to do here
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let obj = this._connections[pos];
|
|
||||||
if (obj.item)
|
|
||||||
obj.item.destroy();
|
|
||||||
this._connections.splice(pos, 1);
|
|
||||||
|
|
||||||
if (this._connections.length <= 1) {
|
|
||||||
// We need to show the automatic connection again
|
|
||||||
// (or in the case of NMDeviceWired, we want to hide
|
|
||||||
// the only explicit connection)
|
|
||||||
this._clearSection();
|
|
||||||
this._queueCreateSection();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
connectionValid: function(connection) {
|
connectionValid: function(connection) {
|
||||||
return this.device.connection_valid(connection);
|
return this.device.connection_valid(connection);
|
||||||
},
|
},
|
||||||
|
|
||||||
_connectionSortFunction: function(one, two) {
|
|
||||||
if (one.timestamp == two.timestamp)
|
|
||||||
return GLib.utf8_collate(one.name, two.name);
|
|
||||||
|
|
||||||
return two.timestamp - one.timestamp;
|
|
||||||
},
|
|
||||||
|
|
||||||
setEnabled: function(enabled) {
|
setEnabled: function(enabled) {
|
||||||
// do nothing by default, we want to keep the conneciton list visible
|
// do nothing by default, we want to keep the conneciton list visible
|
||||||
// in the majority of cases (wired, wwan, vpn)
|
// in the majority of cases (wired, wwan)
|
||||||
},
|
},
|
||||||
|
|
||||||
getStatusLabel: function() {
|
getStatusLabel: function() {
|
||||||
@ -495,20 +473,15 @@ const NMDevice = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
syncDescription: function() {
|
||||||
|
this.statusItem.label.text = this.device._description;
|
||||||
|
},
|
||||||
|
|
||||||
// protected
|
// protected
|
||||||
_createAutomaticConnection: function() {
|
_createAutomaticConnection: function() {
|
||||||
throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection');
|
throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection');
|
||||||
},
|
},
|
||||||
|
|
||||||
_findConnection: function(uuid) {
|
|
||||||
for (let i = 0; i < this._connections.length; i++) {
|
|
||||||
let obj = this._connections[i];
|
|
||||||
if (obj.uuid == uuid)
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
},
|
|
||||||
|
|
||||||
_queueCreateSection: function() {
|
_queueCreateSection: function() {
|
||||||
this._clearSection();
|
this._clearSection();
|
||||||
Main.queueDeferredWork(this._deferredWorkId);
|
Main.queueDeferredWork(this._deferredWorkId);
|
||||||
@ -631,29 +604,8 @@ const NMDevice = new Lang.Class({
|
|||||||
this.statusItem.setStatus(this.getStatusLabel());
|
this.statusItem.setStatus(this.getStatusLabel());
|
||||||
|
|
||||||
this.emit('state-changed');
|
this.emit('state-changed');
|
||||||
},
|
|
||||||
|
|
||||||
_getDescription: function() {
|
|
||||||
let dev_product = this.device.get_product();
|
|
||||||
let dev_vendor = this.device.get_vendor();
|
|
||||||
if (!dev_product || !dev_vendor)
|
|
||||||
return '';
|
|
||||||
|
|
||||||
let product = Util.fixupPCIDescription(dev_product);
|
|
||||||
let vendor = Util.fixupPCIDescription(dev_vendor);
|
|
||||||
let out = '';
|
|
||||||
|
|
||||||
// Another quick hack; if all of the fixed up vendor string
|
|
||||||
// is found in product, ignore the vendor.
|
|
||||||
if (product.indexOf(vendor) == -1)
|
|
||||||
out += vendor + ' ';
|
|
||||||
out += product;
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(NMDevice.prototype);
|
|
||||||
|
|
||||||
|
|
||||||
const NMDeviceWired = new Lang.Class({
|
const NMDeviceWired = new Lang.Class({
|
||||||
Name: 'NMDeviceWired',
|
Name: 'NMDeviceWired',
|
||||||
@ -861,99 +813,6 @@ const NMDeviceBluetooth = new Lang.Class({
|
|||||||
this._clearSection();
|
this._clearSection();
|
||||||
this._queueCreateSection();
|
this._queueCreateSection();
|
||||||
this._updateStatusItem();
|
this._updateStatusItem();
|
||||||
},
|
|
||||||
|
|
||||||
_getDescription: function() {
|
|
||||||
return this.device.name || _("Bluetooth");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// Not a real device, but I save a lot code this way
|
|
||||||
const NMDeviceVPN = new Lang.Class({
|
|
||||||
Name: 'NMDeviceVPN',
|
|
||||||
Extends: NMDevice,
|
|
||||||
|
|
||||||
_init: function(client, device, connections) {
|
|
||||||
// Disable autoconnections
|
|
||||||
this._autoConnectionName = null;
|
|
||||||
this.category = NMConnectionCategory.VPN;
|
|
||||||
|
|
||||||
this.parent(client, null, connections);
|
|
||||||
},
|
|
||||||
|
|
||||||
connectionValid: function(connection) {
|
|
||||||
return connection._type == NetworkManager.SETTING_VPN_SETTING_NAME;
|
|
||||||
},
|
|
||||||
|
|
||||||
get empty() {
|
|
||||||
return this._connections.length == 0;
|
|
||||||
},
|
|
||||||
|
|
||||||
get connected() {
|
|
||||||
if (!this._activeConnection)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return this._activeConnection.vpn_state == NetworkManager.VPNConnectionState.ACTIVATED;
|
|
||||||
},
|
|
||||||
|
|
||||||
setActiveConnection: function(activeConnection) {
|
|
||||||
if (this._stateChangeId)
|
|
||||||
this._activeConnection.disconnect(this._stateChangeId);
|
|
||||||
this._stateChangeId = 0;
|
|
||||||
|
|
||||||
this.parent(activeConnection);
|
|
||||||
|
|
||||||
if (this._activeConnection)
|
|
||||||
this._stateChangeId = this._activeConnection.connect('vpn-state-changed',
|
|
||||||
Lang.bind(this, this._connectionStateChanged));
|
|
||||||
|
|
||||||
this.emit('state-changed');
|
|
||||||
},
|
|
||||||
|
|
||||||
_shouldShowConnectionList: function() {
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
deactivate: function() {
|
|
||||||
if (this._activeConnection)
|
|
||||||
this._client.deactivate_connection(this._activeConnection);
|
|
||||||
},
|
|
||||||
|
|
||||||
getStatusLabel: function() {
|
|
||||||
if (!this._activeConnection) // Same as DISCONNECTED
|
|
||||||
return null;
|
|
||||||
|
|
||||||
switch(this._activeConnection.vpn_state) {
|
|
||||||
case NetworkManager.VPNConnectionState.DISCONNECTED:
|
|
||||||
case NetworkManager.VPNConnectionState.ACTIVATED:
|
|
||||||
return null;
|
|
||||||
case NetworkManager.VPNConnectionState.PREPARE:
|
|
||||||
case NetworkManager.VPNConnectionState.CONNECT:
|
|
||||||
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
|
|
||||||
return _("connecting...");
|
|
||||||
case NetworkManager.VPNConnectionState.NEED_AUTH:
|
|
||||||
/* Translators: this is for network connections that require some kind of key or password */
|
|
||||||
return _("authentication required");
|
|
||||||
case NetworkManager.VPNConnectionState.FAILED:
|
|
||||||
return _("connection failed");
|
|
||||||
default:
|
|
||||||
log('VPN connection state invalid, is %d'.format(this.device.state));
|
|
||||||
return 'invalid';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_connectionStateChanged: function(connection, newstate, reason) {
|
|
||||||
if (newstate == NetworkManager.VPNConnectionState.FAILED) {
|
|
||||||
// FIXME: if we ever want to show something based on reason,
|
|
||||||
// we need to convert from NetworkManager.VPNConnectionStateReason
|
|
||||||
// to NetworkManager.DeviceStateReason
|
|
||||||
this.emit('activation-failed', reason);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Differently from real NMDevices, there is no need to queue
|
|
||||||
// an update of the menu section, contents wouldn't change anyway
|
|
||||||
this.emit('state-changed');
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1557,6 +1416,151 @@ const NMDeviceWireless = new Lang.Class({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const NMVPNSection = new Lang.Class({
|
||||||
|
Name: 'NMVPNSection',
|
||||||
|
Extends: NMConnectionBased,
|
||||||
|
category: NMConnectionCategory.VPN,
|
||||||
|
|
||||||
|
_init: function(client, connections) {
|
||||||
|
this.parent(connections);
|
||||||
|
this._client = client;
|
||||||
|
|
||||||
|
this.section = new PopupMenu.PopupMenuSection();
|
||||||
|
this._deferredWorkId = Main.initializeDeferredWork(this.section.actor, Lang.bind(this, this._createSection));
|
||||||
|
},
|
||||||
|
|
||||||
|
get empty() {
|
||||||
|
return this._connections.length == 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
connectionValid: function(connection) {
|
||||||
|
// filtering is done by NMApplet code
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
getStatusLabel: function(activeConnection) {
|
||||||
|
switch(activeConnection.vpn_state) {
|
||||||
|
case NetworkManager.VPNConnectionState.DISCONNECTED:
|
||||||
|
case NetworkManager.VPNConnectionState.ACTIVATED:
|
||||||
|
return null;
|
||||||
|
case NetworkManager.VPNConnectionState.PREPARE:
|
||||||
|
case NetworkManager.VPNConnectionState.CONNECT:
|
||||||
|
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
|
||||||
|
return _("connecting...");
|
||||||
|
case NetworkManager.VPNConnectionState.NEED_AUTH:
|
||||||
|
/* Translators: this is for network connections that require some kind of key or password */
|
||||||
|
return _("authentication required");
|
||||||
|
case NetworkManager.VPNConnectionState.FAILED:
|
||||||
|
return _("connection failed");
|
||||||
|
default:
|
||||||
|
log('VPN connection state invalid, is %d'.format(this.device.state));
|
||||||
|
return 'invalid';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
clearActiveConnection: function(activeConnection) {
|
||||||
|
let pos = this._findConnection(activeConnection.uuid);
|
||||||
|
if (pos < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let obj = this._connections[pos];
|
||||||
|
obj.active.disconnect(obj.stateChangedId);
|
||||||
|
obj.active = null;
|
||||||
|
|
||||||
|
if (obj.item) {
|
||||||
|
obj.item.setToggleState(false);
|
||||||
|
obj.item.setStatus(null);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
setActiveConnection: function(activeConnection) {
|
||||||
|
let pos = this._findConnection(activeConnection.uuid);
|
||||||
|
if (pos < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let obj = this._connections[pos];
|
||||||
|
obj.active = activeConnection;
|
||||||
|
obj.stateChangedId = obj.active.connect('vpn-state-changed',
|
||||||
|
Lang.bind(this, this._connectionStateChanged));
|
||||||
|
|
||||||
|
if (obj.item) {
|
||||||
|
obj.item.setToggleState(obj.active.vpn_state ==
|
||||||
|
NetworkManager.VPNConnectionState.ACTIVATED);
|
||||||
|
obj.item.setStatus(this.getStatusLabel(obj.active));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_queueCreateSection: function() {
|
||||||
|
this.section.removeAll();
|
||||||
|
Main.queueDeferredWork(this._deferredWorkId);
|
||||||
|
},
|
||||||
|
|
||||||
|
_createConnectionItem: function(obj) {
|
||||||
|
let menuItem = new PopupMenu.PopupSwitchMenuItem(obj.name, false,
|
||||||
|
{ style_class: 'popup-subtitle-menu-item' });
|
||||||
|
menuItem.connect('toggled', Lang.bind(this, function(menuItem) {
|
||||||
|
if (menuItem.state) {
|
||||||
|
this._client.activate_connection(obj.connection, null, null, null);
|
||||||
|
// Immediately go back to disconnected, until NM tells us to change
|
||||||
|
menuItem.setToggleState(false);
|
||||||
|
} else if (obj.active) {
|
||||||
|
this._client.deactivate_connection(obj.active);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
if (obj.active) {
|
||||||
|
menuItem.setToggleState(obj.active.vpn_state ==
|
||||||
|
NetworkManager.VPNConnectionState.ACTIVATED);
|
||||||
|
menuItem.setStatus(this.getStatusLabel(obj.active));
|
||||||
|
}
|
||||||
|
|
||||||
|
return menuItem;
|
||||||
|
},
|
||||||
|
|
||||||
|
_createSection: function() {
|
||||||
|
if (this._connections.length > 0) {
|
||||||
|
this.section.actor.show();
|
||||||
|
|
||||||
|
for(let j = 0; j < this._connections.length; ++j) {
|
||||||
|
let obj = this._connections[j];
|
||||||
|
obj.item = this._createConnectionItem(obj);
|
||||||
|
|
||||||
|
if (j >= NUM_VISIBLE_NETWORKS) {
|
||||||
|
if (!this._overflowItem) {
|
||||||
|
this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
|
||||||
|
this.section.addMenuItem(this._overflowItem);
|
||||||
|
}
|
||||||
|
this._overflowItem.menu.addMenuItem(obj.item);
|
||||||
|
} else
|
||||||
|
this.section.addMenuItem(obj.item);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.section.actor.hide()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_connectionStateChanged: function(vpnConnection, newstate, reason) {
|
||||||
|
if (newstate == NetworkManager.VPNConnectionState.FAILED) {
|
||||||
|
// FIXME: if we ever want to show something based on reason,
|
||||||
|
// we need to convert from NetworkManager.VPNConnectionStateReason
|
||||||
|
// to NetworkManager.DeviceStateReason
|
||||||
|
this.emit('activation-failed', reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
let pos = this._findConnection(vpnConnection.uuid);
|
||||||
|
if (pos >= 0) {
|
||||||
|
let obj = this._connections[pos];
|
||||||
|
if (obj.item) {
|
||||||
|
obj.item.setToggleState(vpnConnection.vpn_state ==
|
||||||
|
NetworkManager.VPNConnectionState.ACTIVATED);
|
||||||
|
obj.item.setStatus(this.getStatusLabel(vpnConnection));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log('Could not find connection for vpn-state-changed handler');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const NMApplet = new Lang.Class({
|
const NMApplet = new Lang.Class({
|
||||||
Name: 'NMApplet',
|
Name: 'NMApplet',
|
||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
@ -1589,15 +1593,14 @@ const NMApplet = new Lang.Class({
|
|||||||
this._mobileUpdateId = 0;
|
this._mobileUpdateId = 0;
|
||||||
this._mobileUpdateDevice = null;
|
this._mobileUpdateDevice = null;
|
||||||
|
|
||||||
|
this._nmDevices = [];
|
||||||
this._devices = { };
|
this._devices = { };
|
||||||
|
|
||||||
this._devices.wired = {
|
this._devices.wired = {
|
||||||
section: new PopupMenu.PopupMenuSection(),
|
section: new PopupMenu.PopupMenuSection(),
|
||||||
devices: [ ],
|
devices: [ ],
|
||||||
item: new NMWiredSectionTitleMenuItem(_("Wired"))
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this._devices.wired.section.addMenuItem(this._devices.wired.item);
|
|
||||||
this._devices.wired.section.actor.hide();
|
this._devices.wired.section.actor.hide();
|
||||||
this.menu.addMenuItem(this._devices.wired.section);
|
this.menu.addMenuItem(this._devices.wired.section);
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
@ -1605,7 +1608,7 @@ const NMApplet = new Lang.Class({
|
|||||||
this._devices.wireless = {
|
this._devices.wireless = {
|
||||||
section: new PopupMenu.PopupMenuSection(),
|
section: new PopupMenu.PopupMenuSection(),
|
||||||
devices: [ ],
|
devices: [ ],
|
||||||
item: this._makeToggleItem('wireless', _("Wireless"))
|
item: this._makeToggleItem('wireless', _("Wi-Fi"))
|
||||||
};
|
};
|
||||||
this._devices.wireless.section.addMenuItem(this._devices.wireless.item);
|
this._devices.wireless.section.addMenuItem(this._devices.wireless.item);
|
||||||
this._devices.wireless.section.actor.hide();
|
this._devices.wireless.section.actor.hide();
|
||||||
@ -1615,22 +1618,14 @@ const NMApplet = new Lang.Class({
|
|||||||
this._devices.wwan = {
|
this._devices.wwan = {
|
||||||
section: new PopupMenu.PopupMenuSection(),
|
section: new PopupMenu.PopupMenuSection(),
|
||||||
devices: [ ],
|
devices: [ ],
|
||||||
item: this._makeToggleItem('wwan', _("Mobile broadband"))
|
|
||||||
};
|
};
|
||||||
this._devices.wwan.section.addMenuItem(this._devices.wwan.item);
|
|
||||||
this._devices.wwan.section.actor.hide();
|
this._devices.wwan.section.actor.hide();
|
||||||
this.menu.addMenuItem(this._devices.wwan.section);
|
this.menu.addMenuItem(this._devices.wwan.section);
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
|
|
||||||
this._devices.vpn = {
|
this._vpnSection = new NMVPNSection(this._client, this._connections);
|
||||||
section: new PopupMenu.PopupMenuSection(),
|
this._vpnSection.connect('activation-failed', Lang.bind(this, this._onActivationFailed));
|
||||||
device: this._makeWrapperDevice(NMDeviceVPN, null),
|
this.menu.addMenuItem(this._vpnSection.section);
|
||||||
item: new NMWiredSectionTitleMenuItem(_("VPN Connections"))
|
|
||||||
};
|
|
||||||
this._devices.vpn.section.addMenuItem(this._devices.vpn.item);
|
|
||||||
this._devices.vpn.section.addMenuItem(this._devices.vpn.device.section);
|
|
||||||
this._devices.vpn.section.actor.hide();
|
|
||||||
this.menu.addMenuItem(this._devices.vpn.section);
|
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
this.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
|
this.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
|
||||||
|
|
||||||
@ -1699,18 +1694,6 @@ const NMApplet = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_syncSectionTitle: function(category) {
|
_syncSectionTitle: function(category) {
|
||||||
if (category == NMConnectionCategory.VPN) {
|
|
||||||
// Special case VPN: it's only one device (and a fake one
|
|
||||||
// actually), and we don't show it if empty
|
|
||||||
let device = this._devices.vpn.device;
|
|
||||||
let section = this._devices.vpn.section;
|
|
||||||
let item = this._devices.vpn.item;
|
|
||||||
|
|
||||||
section.actor.visible = !device.empty;
|
|
||||||
item.updateForDevice(device);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let devices = this._devices[category].devices;
|
let devices = this._devices[category].devices;
|
||||||
let item = this._devices[category].item;
|
let item = this._devices[category].item;
|
||||||
let section = this._devices[category].section;
|
let section = this._devices[category].section;
|
||||||
@ -1718,16 +1701,23 @@ const NMApplet = new Lang.Class({
|
|||||||
section.actor.hide();
|
section.actor.hide();
|
||||||
else {
|
else {
|
||||||
section.actor.show();
|
section.actor.show();
|
||||||
if (devices.length == 1) {
|
|
||||||
let dev = devices[0];
|
// Sync the relation between the section title
|
||||||
dev.statusItem.actor.hide();
|
// item (the one with the airplane mode switch)
|
||||||
item.updateForDevice(dev);
|
// and the individual device switches
|
||||||
} else {
|
if (item) {
|
||||||
devices.forEach(function(dev) {
|
if (devices.length == 1) {
|
||||||
dev.statusItem.actor.show();
|
let dev = devices[0];
|
||||||
});
|
dev.statusItem.actor.hide();
|
||||||
// remove status text from the section title item
|
item.updateForDevice(dev);
|
||||||
item.updateForDevice(null);
|
} else {
|
||||||
|
devices.forEach(function(dev) {
|
||||||
|
dev.statusItem.actor.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
// remove status text from the section title item
|
||||||
|
item.updateForDevice(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1735,8 +1725,9 @@ const NMApplet = new Lang.Class({
|
|||||||
_readDevices: function() {
|
_readDevices: function() {
|
||||||
let devices = this._client.get_devices() || [ ];
|
let devices = this._client.get_devices() || [ ];
|
||||||
for (let i = 0; i < devices.length; ++i) {
|
for (let i = 0; i < devices.length; ++i) {
|
||||||
this._deviceAdded(this._client, devices[i]);
|
this._deviceAdded(this._client, devices[i], true);
|
||||||
}
|
}
|
||||||
|
this._syncDeviceNames();
|
||||||
},
|
},
|
||||||
|
|
||||||
_notifyForDevice: function(device, iconName, title, text, urgency) {
|
_notifyForDevice: function(device, iconName, title, text, urgency) {
|
||||||
@ -1747,10 +1738,9 @@ const NMApplet = new Lang.Class({
|
|||||||
or this._source will be cleared */
|
or this._source will be cleared */
|
||||||
this._ensureSource();
|
this._ensureSource();
|
||||||
|
|
||||||
let icon = new St.Icon({ icon_name: iconName,
|
let gicon = new Gio.ThemedIcon({ name: iconName });
|
||||||
icon_size: MessageTray.NOTIFICATION_ICON_SIZE });
|
|
||||||
device._notification = new MessageTray.Notification(this._source, title, text,
|
device._notification = new MessageTray.Notification(this._source, title, text,
|
||||||
{ icon: icon });
|
{ gicon: gicon });
|
||||||
device._notification.setUrgency(urgency);
|
device._notification.setUrgency(urgency);
|
||||||
device._notification.setTransient(true);
|
device._notification.setTransient(true);
|
||||||
device._notification.connect('destroy', function() {
|
device._notification.connect('destroy', function() {
|
||||||
@ -1759,17 +1749,20 @@ const NMApplet = new Lang.Class({
|
|||||||
this._source.notify(device._notification);
|
this._source.notify(device._notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onActivationFailed: function(device, reason) {
|
||||||
|
// XXX: nm-applet has no special text depending on reason
|
||||||
|
// but I'm not sure of this generic message
|
||||||
|
this._notifyForDevice(device, 'network-error-symbolic',
|
||||||
|
_("Connection failed"),
|
||||||
|
_("Activation of network connection failed"),
|
||||||
|
MessageTray.Urgency.HIGH);
|
||||||
|
},
|
||||||
|
|
||||||
_makeWrapperDevice: function(wrapperClass, device) {
|
_makeWrapperDevice: function(wrapperClass, device) {
|
||||||
let wrapper = new wrapperClass(this._client, device, this._connections);
|
let wrapper = new wrapperClass(this._client, device, this._connections);
|
||||||
|
|
||||||
wrapper._activationFailedId = wrapper.connect('activation-failed', Lang.bind(this, function(device, reason) {
|
wrapper._activationFailedId = wrapper.connect('activation-failed',
|
||||||
// XXX: nm-applet has no special text depending on reason
|
Lang.bind(this, this._onActivationFailed));
|
||||||
// but I'm not sure of this generic message
|
|
||||||
this._notifyForDevice(device, 'network-error-symbolic',
|
|
||||||
_("Connection failed"),
|
|
||||||
_("Activation of network connection failed"),
|
|
||||||
MessageTray.Urgency.HIGH);
|
|
||||||
}));
|
|
||||||
wrapper._deviceStateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
|
wrapper._deviceStateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
|
||||||
this._syncSectionTitle(dev.category);
|
this._syncSectionTitle(dev.category);
|
||||||
}));
|
}));
|
||||||
@ -1782,7 +1775,18 @@ const NMApplet = new Lang.Class({
|
|||||||
return wrapper;
|
return wrapper;
|
||||||
},
|
},
|
||||||
|
|
||||||
_deviceAdded: function(client, device) {
|
_syncDeviceNames: function() {
|
||||||
|
let names = NMGtk.utils_disambiguate_device_names(this._nmDevices);
|
||||||
|
for (let i = 0; i < this._nmDevices.length; i++) {
|
||||||
|
let device = this._nmDevices[i];
|
||||||
|
if (device._description != names[i]) {
|
||||||
|
device._description = names[i];
|
||||||
|
device._delegate.syncDescription();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_deviceAdded: function(client, device, skipSyncDeviceNames) {
|
||||||
if (device._delegate) {
|
if (device._delegate) {
|
||||||
// already seen, not adding again
|
// already seen, not adding again
|
||||||
return;
|
return;
|
||||||
@ -1793,10 +1797,14 @@ const NMApplet = new Lang.Class({
|
|||||||
let section = this._devices[wrapper.category].section;
|
let section = this._devices[wrapper.category].section;
|
||||||
let devices = this._devices[wrapper.category].devices;
|
let devices = this._devices[wrapper.category].devices;
|
||||||
|
|
||||||
section.addMenuItem(wrapper.section, 1);
|
section.addMenuItem(wrapper.statusItem);
|
||||||
section.addMenuItem(wrapper.statusItem, 1);
|
section.addMenuItem(wrapper.section);
|
||||||
devices.push(wrapper);
|
devices.push(wrapper);
|
||||||
|
|
||||||
|
this._nmDevices.push(device);
|
||||||
|
if (!skipSyncDeviceNames)
|
||||||
|
this._syncDeviceNames();
|
||||||
|
|
||||||
this._syncSectionTitle(wrapper.category);
|
this._syncSectionTitle(wrapper.category);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1814,6 +1822,10 @@ const NMApplet = new Lang.Class({
|
|||||||
let pos = devices.indexOf(wrapper);
|
let pos = devices.indexOf(wrapper);
|
||||||
devices.splice(pos, 1);
|
devices.splice(pos, 1);
|
||||||
|
|
||||||
|
pos = this._nmDevices.indexOf(device);
|
||||||
|
this._nmDevices.splice(pos, 1);
|
||||||
|
this._syncDeviceNames();
|
||||||
|
|
||||||
this._syncSectionTitle(wrapper.category)
|
this._syncSectionTitle(wrapper.category)
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1852,7 +1864,7 @@ const NMApplet = new Lang.Class({
|
|||||||
for (let i = 0; i < closedConnections.length; i++) {
|
for (let i = 0; i < closedConnections.length; i++) {
|
||||||
let active = closedConnections[i];
|
let active = closedConnections[i];
|
||||||
if (active._primaryDevice) {
|
if (active._primaryDevice) {
|
||||||
active._primaryDevice.setActiveConnection(null);
|
active._primaryDevice.clearActiveConnection(active);
|
||||||
active._primaryDevice = null;
|
active._primaryDevice = null;
|
||||||
}
|
}
|
||||||
if (active._inited) {
|
if (active._inited) {
|
||||||
@ -1919,7 +1931,7 @@ const NMApplet = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
a._primaryDevice = this._devices.vpn.device
|
a._primaryDevice = this._vpnSection;
|
||||||
|
|
||||||
if (a._primaryDevice)
|
if (a._primaryDevice)
|
||||||
a._primaryDevice.setActiveConnection(a);
|
a._primaryDevice.setActiveConnection(a);
|
||||||
@ -2001,8 +2013,7 @@ const NMApplet = new Lang.Class({
|
|||||||
let section = connection._section;
|
let section = connection._section;
|
||||||
|
|
||||||
if (section == NMConnectionCategory.VPN) {
|
if (section == NMConnectionCategory.VPN) {
|
||||||
this._devices.vpn.device.removeConnection(connection);
|
this._vpnSection.removeConnection(connection);
|
||||||
this._syncSectionTitle(section);
|
|
||||||
} else if (section != NMConnectionCategory.INVALID) {
|
} else if (section != NMConnectionCategory.INVALID) {
|
||||||
let devices = this._devices[section].devices;
|
let devices = this._devices[section].devices;
|
||||||
for (let i = 0; i < devices.length; i++)
|
for (let i = 0; i < devices.length; i++)
|
||||||
@ -2025,8 +2036,7 @@ const NMApplet = new Lang.Class({
|
|||||||
if (section == NMConnectionCategory.INVALID)
|
if (section == NMConnectionCategory.INVALID)
|
||||||
return;
|
return;
|
||||||
if (section == NMConnectionCategory.VPN) {
|
if (section == NMConnectionCategory.VPN) {
|
||||||
this._devices.vpn.device.checkConnection(connection);
|
this._vpnSection.checkConnection(connection);
|
||||||
this._syncSectionTitle(section);
|
|
||||||
} else {
|
} else {
|
||||||
let devices = this._devices[section].devices;
|
let devices = this._devices[section].devices;
|
||||||
for (let i = 0; i < devices.length; i++) {
|
for (let i = 0; i < devices.length; i++) {
|
||||||
@ -2052,7 +2062,6 @@ const NMApplet = new Lang.Class({
|
|||||||
this._syncSectionTitle(NMConnectionCategory.WIRED);
|
this._syncSectionTitle(NMConnectionCategory.WIRED);
|
||||||
this._syncSectionTitle(NMConnectionCategory.WIRELESS);
|
this._syncSectionTitle(NMConnectionCategory.WIRELESS);
|
||||||
this._syncSectionTitle(NMConnectionCategory.WWAN);
|
this._syncSectionTitle(NMConnectionCategory.WWAN);
|
||||||
this._syncSectionTitle(NMConnectionCategory.VPN);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_syncNMState: function() {
|
_syncNMState: function() {
|
||||||
|
@ -96,7 +96,7 @@ const Indicator = new Lang.Class({
|
|||||||
let minutes = time % 60;
|
let minutes = time % 60;
|
||||||
let hours = Math.floor(time / 60);
|
let hours = Math.floor(time / 60);
|
||||||
let timestring;
|
let timestring;
|
||||||
if (time > 60) {
|
if (time >= 60) {
|
||||||
if (minutes == 0) {
|
if (minutes == 0) {
|
||||||
timestring = ngettext("%d hour remaining", "%d hours remaining", hours).format(hours);
|
timestring = ngettext("%d hour remaining", "%d hours remaining", hours).format(hours);
|
||||||
} else {
|
} else {
|
||||||
|
@ -63,10 +63,7 @@ const VolumeMenu = new Lang.Class({
|
|||||||
this.addMenuItem(this._inputTitle);
|
this.addMenuItem(this._inputTitle);
|
||||||
this.addMenuItem(this._inputSlider);
|
this.addMenuItem(this._inputSlider);
|
||||||
|
|
||||||
if (this._control.get_state() == Gvc.MixerControlState.READY) {
|
this._onControlStateChanged();
|
||||||
this._readOutput();
|
|
||||||
this._readInput();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
scroll: function(direction) {
|
scroll: function(direction) {
|
||||||
@ -95,6 +92,7 @@ const VolumeMenu = new Lang.Class({
|
|||||||
if (this._control.get_state() == Gvc.MixerControlState.READY) {
|
if (this._control.get_state() == Gvc.MixerControlState.READY) {
|
||||||
this._readOutput();
|
this._readOutput();
|
||||||
this._readInput();
|
this._readInput();
|
||||||
|
this._maybeShowInput();
|
||||||
} else {
|
} else {
|
||||||
this.emit('icon-changed', null);
|
this.emit('icon-changed', null);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ const Clutter = imports.gi.Clutter;
|
|||||||
const Gdm = imports.gi.Gdm;
|
const Gdm = imports.gi.Gdm;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
|
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
@ -112,6 +113,7 @@ const UnlockDialog = new Lang.Class({
|
|||||||
_init: function(parentActor) {
|
_init: function(parentActor) {
|
||||||
this.parent({ shellReactive: true,
|
this.parent({ shellReactive: true,
|
||||||
styleClass: 'login-dialog',
|
styleClass: 'login-dialog',
|
||||||
|
keybindingMode: Main.KeybindingMode.UNLOCK_SCREEN,
|
||||||
parentActor: parentActor
|
parentActor: parentActor
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -128,6 +130,7 @@ const UnlockDialog = new Lang.Class({
|
|||||||
this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion));
|
this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion));
|
||||||
this._userVerifier.connect('show-message', Lang.bind(this, this._showMessage));
|
this._userVerifier.connect('show-message', Lang.bind(this, this._showMessage));
|
||||||
this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete));
|
this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete));
|
||||||
|
this._userVerifier.connect('verification-failed', Lang.bind(this, this._onVerificationFailed));
|
||||||
this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
|
this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
|
||||||
|
|
||||||
this._userVerifier.connect('show-login-hint', Lang.bind(this, this._showLoginHint));
|
this._userVerifier.connect('show-login-hint', Lang.bind(this, this._showLoginHint));
|
||||||
@ -149,6 +152,9 @@ const UnlockDialog = new Lang.Class({
|
|||||||
ShellEntry.addContextMenu(this._promptEntry, { isPassword: true });
|
ShellEntry.addContextMenu(this._promptEntry, { isPassword: true });
|
||||||
this.setInitialKeyFocus(this._promptEntry);
|
this.setInitialKeyFocus(this._promptEntry);
|
||||||
this._promptEntry.clutter_text.connect('activate', Lang.bind(this, this._doUnlock));
|
this._promptEntry.clutter_text.connect('activate', Lang.bind(this, this._doUnlock));
|
||||||
|
this._promptEntry.clutter_text.connect('text-changed', Lang.bind(this, function() {
|
||||||
|
this._updateOkButtonSensitivity(this._promptEntry.text.length > 0);
|
||||||
|
}));
|
||||||
|
|
||||||
this._promptLayout.add(this._promptEntry,
|
this._promptLayout.add(this._promptEntry,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
@ -171,7 +177,7 @@ const UnlockDialog = new Lang.Class({
|
|||||||
default: true };
|
default: true };
|
||||||
this.setButtons([cancelButton, this._okButton]);
|
this.setButtons([cancelButton, this._okButton]);
|
||||||
|
|
||||||
this._updateOkButton(true);
|
this._updateSensitivity(true);
|
||||||
|
|
||||||
let otherUserLabel = new St.Label({ text: _("Log in as another user"),
|
let otherUserLabel = new St.Label({ text: _("Log in as another user"),
|
||||||
style_class: 'login-dialog-not-listed-label' });
|
style_class: 'login-dialog-not-listed-label' });
|
||||||
@ -194,21 +200,31 @@ const UnlockDialog = new Lang.Class({
|
|||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._idleMonitor = Shell.IdleMonitor.get();
|
Main.ctrlAltTabManager.addGroup(this.dialogLayout, _("Unlock Window"), 'dialog-password-symbolic');
|
||||||
// this dialog is only created after user activity (curtain drag or
|
|
||||||
// escape key press), so the timeout will fire after IDLE_TIMEOUT seconds of inactivity
|
this._idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||||
this._idleWatchId = this._idleMonitor.add_watch(IDLE_TIMEOUT * 1000, Lang.bind(this, this._escape));
|
this._idleWatchId = this._idleMonitor.add_watch(IDLE_TIMEOUT * 1000, Lang.bind(this, this._escape));
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateOkButton: function(sensitive) {
|
_updateSensitivity: function(sensitive) {
|
||||||
|
this._promptEntry.reactive = sensitive;
|
||||||
|
this._promptEntry.clutter_text.editable = sensitive;
|
||||||
|
this._updateOkButtonSensitivity(sensitive && this._promptEntry.text.length > 0);
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateOkButtonSensitivity: function(sensitive) {
|
||||||
this._okButton.button.reactive = sensitive;
|
this._okButton.button.reactive = sensitive;
|
||||||
this._okButton.button.can_focus = sensitive;
|
this._okButton.button.can_focus = sensitive;
|
||||||
},
|
},
|
||||||
|
|
||||||
_showMessage: function(userVerifier, message, styleClass) {
|
_showMessage: function(userVerifier, message, styleClass) {
|
||||||
this._promptMessage.text = message;
|
if (message) {
|
||||||
this._promptMessage.styleClass = styleClass;
|
this._promptMessage.text = message;
|
||||||
GdmUtil.fadeInActor(this._promptMessage);
|
this._promptMessage.styleClass = styleClass;
|
||||||
|
GdmUtil.fadeInActor(this._promptMessage);
|
||||||
|
} else {
|
||||||
|
GdmUtil.fadeOutActor(this._promptMessage);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_onAskQuestion: function(verifier, serviceName, question, passwordChar) {
|
_onAskQuestion: function(verifier, serviceName, question, passwordChar) {
|
||||||
@ -230,7 +246,7 @@ const UnlockDialog = new Lang.Class({
|
|||||||
this._promptEntry.menu.isPassword = passwordChar != '';
|
this._promptEntry.menu.isPassword = passwordChar != '';
|
||||||
|
|
||||||
this._currentQuery = serviceName;
|
this._currentQuery = serviceName;
|
||||||
this._updateOkButton(true);
|
this._updateSensitivity(true);
|
||||||
},
|
},
|
||||||
|
|
||||||
_showLoginHint: function(verifier, message) {
|
_showLoginHint: function(verifier, message) {
|
||||||
@ -248,7 +264,7 @@ const UnlockDialog = new Lang.Class({
|
|||||||
// and make ourself non-reactive
|
// and make ourself non-reactive
|
||||||
// the actual reply to GDM will be sent as soon as asked
|
// the actual reply to GDM will be sent as soon as asked
|
||||||
this._firstQuestionAnswer = this._promptEntry.text;
|
this._firstQuestionAnswer = this._promptEntry.text;
|
||||||
this._updateOkButton(false);
|
this._updateSensitivity(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,7 +274,7 @@ const UnlockDialog = new Lang.Class({
|
|||||||
let query = this._currentQuery;
|
let query = this._currentQuery;
|
||||||
this._currentQuery = null;
|
this._currentQuery = null;
|
||||||
|
|
||||||
this._updateOkButton(false);
|
this._updateSensitivity(false);
|
||||||
|
|
||||||
this._userVerifier.answerQuery(query, this._promptEntry.text);
|
this._userVerifier.answerQuery(query, this._promptEntry.text);
|
||||||
},
|
},
|
||||||
@ -272,6 +288,17 @@ const UnlockDialog = new Lang.Class({
|
|||||||
this.emit('failed');
|
this.emit('failed');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onVerificationFailed: function() {
|
||||||
|
this._currentQuery = null;
|
||||||
|
this._firstQuestion = true;
|
||||||
|
|
||||||
|
this._promptEntry.text = '';
|
||||||
|
this._promptEntry.clutter_text.set_password_char('\u25cf');
|
||||||
|
this._promptEntry.menu.isPassword = true;
|
||||||
|
|
||||||
|
this._updateSensitivity(false);
|
||||||
|
},
|
||||||
|
|
||||||
_escape: function() {
|
_escape: function() {
|
||||||
this._userVerifier.cancel();
|
this._userVerifier.cancel();
|
||||||
this.emit('failed');
|
this.emit('failed');
|
||||||
|
@ -9,11 +9,11 @@ const Pango = imports.gi.Pango;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Tp = imports.gi.TelepathyGLib;
|
const Tp = imports.gi.TelepathyGLib;
|
||||||
const UPowerGlib = imports.gi.UPowerGlib;
|
|
||||||
const Atk = imports.gi.Atk;
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const BoxPointer = imports.ui.boxpointer;
|
const BoxPointer = imports.ui.boxpointer;
|
||||||
const GnomeSession = imports.misc.gnomeSession;
|
const GnomeSession = imports.misc.gnomeSession;
|
||||||
|
const LoginManager = imports.misc.loginManager;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
@ -26,6 +26,7 @@ const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
|
|||||||
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
|
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
|
||||||
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
|
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
|
||||||
const LOCK_ENABLED_KEY = 'lock-enabled';
|
const LOCK_ENABLED_KEY = 'lock-enabled';
|
||||||
|
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
|
||||||
|
|
||||||
const DIALOG_ICON_SIZE = 64;
|
const DIALOG_ICON_SIZE = 64;
|
||||||
|
|
||||||
@ -187,7 +188,7 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
item = new IMStatusItem(_("Idle"), 'user-idle-symbolic');
|
item = new IMStatusItem(_("Idle"), 'user-idle-symbolic');
|
||||||
this._combo.addMenuItem(item, IMStatus.IDLE);
|
this._combo.addMenuItem(item, IMStatus.IDLE);
|
||||||
|
|
||||||
item = new IMStatusItem(_("Unavailable"), 'user-offline-symbolic');
|
item = new IMStatusItem(_("Offline"), 'user-offline-symbolic');
|
||||||
this._combo.addMenuItem(item, IMStatus.OFFLINE);
|
this._combo.addMenuItem(item, IMStatus.OFFLINE);
|
||||||
|
|
||||||
this._combo.connect('active-item-changed',
|
this._combo.connect('active-item-changed',
|
||||||
@ -482,10 +483,11 @@ const UserMenuButton = new Lang.Class({
|
|||||||
this._presence = new GnomeSession.Presence();
|
this._presence = new GnomeSession.Presence();
|
||||||
this._session = new GnomeSession.SessionManager();
|
this._session = new GnomeSession.SessionManager();
|
||||||
this._haveShutdown = true;
|
this._haveShutdown = true;
|
||||||
|
this._haveSuspend = true;
|
||||||
|
|
||||||
this._accountMgr = Tp.AccountManager.dup();
|
this._accountMgr = Tp.AccountManager.dup();
|
||||||
|
|
||||||
this._upClient = new UPowerGlib.Client();
|
this._loginManager = LoginManager.getLoginManager();
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
this._iconBox = new St.Bin();
|
this._iconBox = new St.Bin();
|
||||||
@ -565,14 +567,15 @@ const UserMenuButton = new Lang.Class({
|
|||||||
// the lockdown setting changes, which should be close enough.
|
// the lockdown setting changes, which should be close enough.
|
||||||
this.menu.connect('open-state-changed', Lang.bind(this,
|
this.menu.connect('open-state-changed', Lang.bind(this,
|
||||||
function(menu, open) {
|
function(menu, open) {
|
||||||
if (open)
|
if (!open)
|
||||||
this._updateHaveShutdown();
|
return;
|
||||||
|
|
||||||
|
this._updateHaveShutdown();
|
||||||
|
this._updateHaveSuspend();
|
||||||
}));
|
}));
|
||||||
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||||
Lang.bind(this, this._updateHaveShutdown));
|
Lang.bind(this, this._updateHaveShutdown));
|
||||||
|
|
||||||
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
|
|
||||||
|
|
||||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||||
this._sessionUpdated();
|
this._sessionUpdated();
|
||||||
},
|
},
|
||||||
@ -608,19 +611,19 @@ const UserMenuButton = new Lang.Class({
|
|||||||
_updateSwitchUser: function() {
|
_updateSwitchUser: function() {
|
||||||
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
||||||
let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
|
let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
|
||||||
let multiSession = Gdm.get_session_ids().length > 1;
|
|
||||||
|
|
||||||
this._loginScreenItem.label.set_text(multiUser ? _("Switch User")
|
this._loginScreenItem.actor.visible = allowSwitch && multiUser;
|
||||||
: _("Switch Session"));
|
|
||||||
this._loginScreenItem.actor.visible = allowSwitch && (multiUser || multiSession);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateLogout: function() {
|
_updateLogout: function() {
|
||||||
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
||||||
|
let alwaysShow = global.settings.get_boolean(ALWAYS_SHOW_LOG_OUT_KEY);
|
||||||
|
let systemAccount = this._user.system_account;
|
||||||
|
let localAccount = this._user.local_account;
|
||||||
let multiUser = this._userManager.has_multiple_users;
|
let multiUser = this._userManager.has_multiple_users;
|
||||||
let multiSession = Gdm.get_session_ids().length > 1;
|
let multiSession = Gdm.get_session_ids().length > 1;
|
||||||
|
|
||||||
this._logoutItem.actor.visible = allowLogout && (multiUser || multiSession);
|
this._logoutItem.actor.visible = allowLogout && (alwaysShow || multiUser || multiSession || systemAccount || !localAccount);
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateLockScreen: function() {
|
_updateLockScreen: function() {
|
||||||
@ -644,9 +647,15 @@ const UserMenuButton = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateSuspendOrPowerOff: function() {
|
_updateHaveSuspend: function() {
|
||||||
this._haveSuspend = this._upClient.get_can_suspend();
|
this._loginManager.canSuspend(Lang.bind(this,
|
||||||
|
function(result) {
|
||||||
|
this._haveSuspend = result;
|
||||||
|
this._updateSuspendOrPowerOff();
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateSuspendOrPowerOff: function() {
|
||||||
if (!this._suspendOrPowerOffItem)
|
if (!this._suspendOrPowerOffItem)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -743,7 +752,7 @@ const UserMenuButton = new Lang.Class({
|
|||||||
item = new PopupMenu.PopupSeparatorMenuItem();
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
item = new PopupMenu.PopupMenuItem(_("System Settings"));
|
item = new PopupMenu.PopupMenuItem(_("Settings"));
|
||||||
item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
|
item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
this._systemSettings = item;
|
this._systemSettings = item;
|
||||||
@ -820,9 +829,9 @@ const UserMenuButton = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onLoginScreenActivate: function() {
|
_onLoginScreenActivate: function() {
|
||||||
|
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
if (this._screenSaverSettings.get_boolean(LOCK_ENABLED_KEY))
|
Main.screenShield.lock(false);
|
||||||
Main.screenShield.lock(false);
|
|
||||||
Gdm.goto_login_session_sync(null);
|
Gdm.goto_login_session_sync(null);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -849,12 +858,13 @@ const UserMenuButton = new Lang.Class({
|
|||||||
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
|
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
|
||||||
Main.screenShield.disconnect(tmpId);
|
Main.screenShield.disconnect(tmpId);
|
||||||
|
|
||||||
this._upClient.suspend_sync(null);
|
this._loginManager.suspend();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||||
Main.screenShield.lock(true);
|
Main.screenShield.lock(true);
|
||||||
} else {
|
} else {
|
||||||
this._upClient.suspend_sync(null);
|
this._loginManager.suspend();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
@ -19,6 +20,7 @@ const Tweener = imports.ui.tweener;
|
|||||||
const Wanda = imports.ui.wanda;
|
const Wanda = imports.ui.wanda;
|
||||||
const WorkspacesView = imports.ui.workspacesView;
|
const WorkspacesView = imports.ui.workspacesView;
|
||||||
|
|
||||||
|
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||||
|
|
||||||
const FocusTrap = new Lang.Class({
|
const FocusTrap = new Lang.Class({
|
||||||
Name: 'FocusTrap',
|
Name: 'FocusTrap',
|
||||||
@ -92,6 +94,11 @@ const ViewSelector = new Lang.Class({
|
|||||||
this._searchPage = this._addPage(this._searchResults.actor, this._entry,
|
this._searchPage = this._addPage(this._searchResults.actor, this._entry,
|
||||||
_("Search"), 'edit-find-symbolic');
|
_("Search"), 'edit-find-symbolic');
|
||||||
|
|
||||||
|
this._searchSettings = new Gio.Settings({ schema: Search.SEARCH_PROVIDERS_SCHEMA });
|
||||||
|
this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
|
||||||
|
this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
|
||||||
|
this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));
|
||||||
|
|
||||||
// Default search providers
|
// Default search providers
|
||||||
// Wanda comes obviously first
|
// Wanda comes obviously first
|
||||||
this.addSearchProvider(new Wanda.WandaSearchProvider());
|
this.addSearchProvider(new Wanda.WandaSearchProvider());
|
||||||
@ -141,6 +148,18 @@ const ViewSelector = new Lang.Class({
|
|||||||
// accessing the properties.
|
// accessing the properties.
|
||||||
this.constrainHeight = new Clutter.BindConstraint({ source: this._pageArea,
|
this.constrainHeight = new Clutter.BindConstraint({ source: this._pageArea,
|
||||||
coordinate: Clutter.BindCoordinate.HEIGHT });
|
coordinate: Clutter.BindCoordinate.HEIGHT });
|
||||||
|
|
||||||
|
Main.wm.addKeybinding('toggle-application-view',
|
||||||
|
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
|
Meta.KeyBindingFlags.NONE,
|
||||||
|
Main.KeybindingMode.NORMAL |
|
||||||
|
Main.KeybindingMode.OVERVIEW,
|
||||||
|
Lang.bind(this, this._toggleAppsPage));
|
||||||
|
},
|
||||||
|
|
||||||
|
_toggleAppsPage: function() {
|
||||||
|
Main.overview.show();
|
||||||
|
this._showAppsButton.checked = !this._showAppsButton.checked;
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
@ -184,7 +203,7 @@ const ViewSelector = new Lang.Class({
|
|||||||
})
|
})
|
||||||
});;
|
});;
|
||||||
this._pageArea.add_actor(page);
|
this._pageArea.add_actor(page);
|
||||||
return page
|
return page;
|
||||||
},
|
},
|
||||||
|
|
||||||
_showPage: function(page) {
|
_showPage: function(page) {
|
||||||
@ -421,7 +440,32 @@ const ViewSelector = new Lang.Class({
|
|||||||
this._showPage(this._searchPage);
|
this._showPage(this._searchPage);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_shouldUseSearchProvider: function(provider) {
|
||||||
|
// the disable-external GSetting only affects remote providers
|
||||||
|
if (!provider.isRemoteProvider)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (this._searchSettings.get_boolean('disable-external'))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let appId = provider.appInfo.get_id();
|
||||||
|
let disable = this._searchSettings.get_strv('disabled');
|
||||||
|
return disable.indexOf(appId) == -1;
|
||||||
|
},
|
||||||
|
|
||||||
|
_reloadRemoteProviders: function() {
|
||||||
|
// removeSearchProvider() modifies the provider list we iterate on,
|
||||||
|
// so make a copy first
|
||||||
|
let remoteProviders = this._searchSystem.getRemoteProviders().slice(0);
|
||||||
|
|
||||||
|
remoteProviders.forEach(Lang.bind(this, this.removeSearchProvider));
|
||||||
|
RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, this.addSearchProvider));
|
||||||
|
},
|
||||||
|
|
||||||
addSearchProvider: function(provider) {
|
addSearchProvider: function(provider) {
|
||||||
|
if (!this._shouldUseSearchProvider(provider))
|
||||||
|
return;
|
||||||
|
|
||||||
this._searchSystem.registerProvider(provider);
|
this._searchSystem.registerProvider(provider);
|
||||||
this._searchResults.createProviderMeta(provider);
|
this._searchResults.createProviderMeta(provider);
|
||||||
},
|
},
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const GdkPixbuf = imports.gi.GdkPixbuf;
|
const GdkPixbuf = imports.gi.GdkPixbuf;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
const IconGrid = imports.ui.iconGrid;
|
const IconGrid = imports.ui.iconGrid;
|
||||||
@ -169,15 +167,8 @@ const WandaSearchProvider = new Lang.Class({
|
|||||||
// only one which speaks the truth!
|
// only one which speaks the truth!
|
||||||
'name': capitalize(fish[0]),
|
'name': capitalize(fish[0]),
|
||||||
'createIcon': function(iconSize) {
|
'createIcon': function(iconSize) {
|
||||||
// for DND only (maybe could be improved)
|
return new St.Icon({ gicon: Gio.icon_new_for_string('face-smile'),
|
||||||
// DON'T use St.Icon here, it crashes the shell
|
icon_size: iconSize });
|
||||||
// (dnd.js code assumes it can query the actor size
|
|
||||||
// without parenting it, while StWidget accesses
|
|
||||||
// StThemeNode in get_preferred_width/height, which
|
|
||||||
// triggers an assertion failure)
|
|
||||||
return St.TextureCache.get_default().load_icon_name(null,
|
|
||||||
'face-smile',
|
|
||||||
iconSize);
|
|
||||||
}
|
}
|
||||||
}]);
|
}]);
|
||||||
},
|
},
|
||||||
|
@ -39,6 +39,8 @@ const WindowAttentionHandler = new Lang.Class({
|
|||||||
let [title, banner] = this._getTitleAndBanner(app, window);
|
let [title, banner] = this._getTitleAndBanner(app, window);
|
||||||
|
|
||||||
let notification = new MessageTray.Notification(source, title, banner);
|
let notification = new MessageTray.Notification(source, title, banner);
|
||||||
|
notification.setForFeedback(true);
|
||||||
|
|
||||||
source.notify(notification);
|
source.notify(notification);
|
||||||
|
|
||||||
source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function() {
|
source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function() {
|
||||||
|
@ -83,6 +83,8 @@ const WindowManager = new Lang.Class({
|
|||||||
|
|
||||||
this._animationBlockCount = 0;
|
this._animationBlockCount = 0;
|
||||||
|
|
||||||
|
this._allowedKeybindings = {};
|
||||||
|
|
||||||
this._switchData = null;
|
this._switchData = null;
|
||||||
this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone));
|
this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone));
|
||||||
this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) {
|
this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) {
|
||||||
@ -99,38 +101,66 @@ const WindowManager = new Lang.Class({
|
|||||||
this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow));
|
this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow));
|
||||||
this._shellwm.connect('map', Lang.bind(this, this._mapWindow));
|
this._shellwm.connect('map', Lang.bind(this, this._mapWindow));
|
||||||
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._workspaceSwitcherPopup = null;
|
this._workspaceSwitcherPopup = null;
|
||||||
Meta.keybindings_set_custom_handler('switch-to-workspace-left',
|
this.setCustomKeybindingHandler('switch-to-workspace-left',
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Main.KeybindingMode.NORMAL |
|
||||||
Meta.keybindings_set_custom_handler('switch-to-workspace-right',
|
Main.KeybindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('switch-to-workspace-up',
|
this.setCustomKeybindingHandler('switch-to-workspace-right',
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Main.KeybindingMode.NORMAL |
|
||||||
Meta.keybindings_set_custom_handler('switch-to-workspace-down',
|
Main.KeybindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('move-to-workspace-left',
|
this.setCustomKeybindingHandler('switch-to-workspace-up',
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Main.KeybindingMode.NORMAL |
|
||||||
Meta.keybindings_set_custom_handler('move-to-workspace-right',
|
Main.KeybindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('move-to-workspace-up',
|
this.setCustomKeybindingHandler('switch-to-workspace-down',
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Main.KeybindingMode.NORMAL |
|
||||||
Meta.keybindings_set_custom_handler('move-to-workspace-down',
|
Main.KeybindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('switch-windows',
|
this.setCustomKeybindingHandler('move-to-workspace-left',
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Main.KeybindingMode.NORMAL |
|
||||||
Meta.keybindings_set_custom_handler('switch-group',
|
Main.KeybindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('switch-windows-backward',
|
this.setCustomKeybindingHandler('move-to-workspace-right',
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Main.KeybindingMode.NORMAL |
|
||||||
Meta.keybindings_set_custom_handler('switch-group-backward',
|
Main.KeybindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('switch-panels',
|
this.setCustomKeybindingHandler('move-to-workspace-up',
|
||||||
Lang.bind(this, this._startA11ySwitcher));
|
Main.KeybindingMode.NORMAL |
|
||||||
global.display.add_keybinding('open-application-menu',
|
Main.KeybindingMode.OVERVIEW,
|
||||||
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
Meta.KeyBindingFlags.NONE,
|
this.setCustomKeybindingHandler('move-to-workspace-down',
|
||||||
Lang.bind(this, this._openAppMenu));
|
Main.KeybindingMode.NORMAL |
|
||||||
|
Main.KeybindingMode.OVERVIEW,
|
||||||
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('switch-windows',
|
||||||
|
Main.KeybindingMode.NORMAL,
|
||||||
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('switch-group',
|
||||||
|
Main.KeybindingMode.NORMAL,
|
||||||
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('switch-windows-backward',
|
||||||
|
Main.KeybindingMode.NORMAL,
|
||||||
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('switch-group-backward',
|
||||||
|
Main.KeybindingMode.NORMAL,
|
||||||
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('switch-panels',
|
||||||
|
Main.KeybindingMode.NORMAL |
|
||||||
|
Main.KeybindingMode.OVERVIEW |
|
||||||
|
Main.KeybindingMode.LOCK_SCREEN |
|
||||||
|
Main.KeybindingMode.UNLOCK_SCREEN |
|
||||||
|
Main.KeybindingMode.LOGIN_SCREEN,
|
||||||
|
Lang.bind(this, this._startA11ySwitcher));
|
||||||
|
|
||||||
|
this.addKeybinding('open-application-menu',
|
||||||
|
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
|
Meta.KeyBindingFlags.NONE,
|
||||||
|
Main.KeybindingMode.NORMAL,
|
||||||
|
Lang.bind(this, this._openAppMenu));
|
||||||
|
|
||||||
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++)
|
||||||
@ -142,6 +172,25 @@ const WindowManager = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setCustomKeybindingHandler: function(name, modes, handler) {
|
||||||
|
if (Meta.keybindings_set_custom_handler(name, handler))
|
||||||
|
this.allowKeybinding(name, modes);
|
||||||
|
},
|
||||||
|
|
||||||
|
addKeybinding: function(name, settings, flags, modes, handler) {
|
||||||
|
if (global.display.add_keybinding(name, settings, flags, handler))
|
||||||
|
this.allowKeybinding(name, modes);
|
||||||
|
},
|
||||||
|
|
||||||
|
removeKeybinding: function(name) {
|
||||||
|
if (global.display.remove_keybinding(name))
|
||||||
|
this.allowKeybinding(name, Main.KeybindingMode.NONE);
|
||||||
|
},
|
||||||
|
|
||||||
|
allowKeybinding: function(name, modes) {
|
||||||
|
this._allowedKeybindings[name] = modes;
|
||||||
|
},
|
||||||
|
|
||||||
blockAnimations: function() {
|
blockAnimations: function() {
|
||||||
this._animationBlockCount++;
|
this._animationBlockCount++;
|
||||||
},
|
},
|
||||||
@ -424,6 +473,21 @@ const WindowManager = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_filterKeybinding: function(shellwm, binding) {
|
||||||
|
if (Main.keybindingMode == Main.KeybindingMode.NONE)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// There's little sense in implementing a keybinding in mutter and
|
||||||
|
// not having it work in NORMAL mode; handle this case generically
|
||||||
|
// so we don't have to explicitly allow all builtin keybindings in
|
||||||
|
// NORMAL mode.
|
||||||
|
if (Main.keybindingMode == Main.KeybindingMode.NORMAL &&
|
||||||
|
binding.is_builtin())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return !(this._allowedKeybindings[binding.get_name()] & Main.keybindingMode);
|
||||||
|
},
|
||||||
|
|
||||||
_switchWorkspace : function(shellwm, from, to, direction) {
|
_switchWorkspace : function(shellwm, from, to, direction) {
|
||||||
if (!this._shouldAnimate()) {
|
if (!this._shouldAnimate()) {
|
||||||
shellwm.completed_switch_workspace();
|
shellwm.completed_switch_workspace();
|
||||||
|
@ -33,21 +33,13 @@ const DRAGGING_WINDOW_OPACITY = 100;
|
|||||||
const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
|
const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
|
||||||
const BUTTON_LAYOUT_KEY = 'button-layout';
|
const BUTTON_LAYOUT_KEY = 'button-layout';
|
||||||
|
|
||||||
// Define a layout scheme for small window counts. For larger
|
// When calculating a layout, we calculate the scale of windows and the percent
|
||||||
// counts we fall back to an algorithm. We need more schemes here
|
// of the available area the new layout uses. If the values for the new layout,
|
||||||
// unless we have a really good algorithm.
|
// when weighted with the values as below, are worse than the previous layout's,
|
||||||
|
// we stop looking for a new layout and use the previous layout.
|
||||||
// Each triplet is [xCenter, yCenter, scale] where the scale
|
// Otherwise, we keep looking for a new layout.
|
||||||
// is relative to the width of the workspace.
|
const LAYOUT_SCALE_WEIGHT = 1;
|
||||||
const POSITIONS = {
|
const LAYOUT_SPACE_WEIGHT = 0.1;
|
||||||
1: [[0.5, 0.5, 0.95]],
|
|
||||||
2: [[0.25, 0.5, 0.48], [0.75, 0.5, 0.48]],
|
|
||||||
3: [[0.25, 0.25, 0.48], [0.75, 0.25, 0.48], [0.5, 0.75, 0.48]],
|
|
||||||
4: [[0.25, 0.25, 0.47], [0.75, 0.25, 0.47], [0.75, 0.75, 0.47], [0.25, 0.75, 0.47]],
|
|
||||||
5: [[0.165, 0.25, 0.32], [0.495, 0.25, 0.32], [0.825, 0.25, 0.32], [0.25, 0.75, 0.32], [0.75, 0.75, 0.32]]
|
|
||||||
};
|
|
||||||
// Used in _orderWindowsPermutations, 5! = 120 which is probably the highest we can go
|
|
||||||
const POSITIONING_PERMUTATIONS_MAX = 5;
|
|
||||||
|
|
||||||
function _interpolate(start, end, step) {
|
function _interpolate(start, end, step) {
|
||||||
return start + (end - start) * step;
|
return start + (end - start) * step;
|
||||||
@ -167,6 +159,24 @@ const WindowClone = new Lang.Class({
|
|||||||
this._selected = false;
|
this._selected = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get slot() {
|
||||||
|
let x, y, w, h;
|
||||||
|
|
||||||
|
if (this.inDrag) {
|
||||||
|
x = this.dragOrigX;
|
||||||
|
y = this.dragOrigY;
|
||||||
|
w = this.actor.width * this.dragOrigScale;
|
||||||
|
h = this.actor.height * this.dragOrigScale;
|
||||||
|
} else {
|
||||||
|
x = this.actor.x;
|
||||||
|
y = this.actor.y;
|
||||||
|
w = this.actor.width * this.actor.scale_x;
|
||||||
|
h = this.actor.height * this.actor.scale_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [x, y, w, h];
|
||||||
|
},
|
||||||
|
|
||||||
setStackAbove: function (actor) {
|
setStackAbove: function (actor) {
|
||||||
this._stackAbove = actor;
|
this._stackAbove = actor;
|
||||||
if (this.inDrag || this._zooming)
|
if (this.inDrag || this._zooming)
|
||||||
@ -443,6 +453,11 @@ const WindowOverlay = new Lang.Class({
|
|||||||
this._updateCaptionId = metaWindow.connect('notify::title',
|
this._updateCaptionId = metaWindow.connect('notify::title',
|
||||||
Lang.bind(this, function(w) {
|
Lang.bind(this, function(w) {
|
||||||
this.title.text = w.title;
|
this.title.text = w.title;
|
||||||
|
// we need this for the next call to get_preferred_width
|
||||||
|
// to return useful results
|
||||||
|
this.title.set_size(-1, -1);
|
||||||
|
|
||||||
|
this._repositionSelf();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let button = new St.Button({ style_class: 'window-close' });
|
let button = new St.Button({ style_class: 'window-close' });
|
||||||
@ -504,15 +519,16 @@ const WindowOverlay = new Lang.Class({
|
|||||||
transition: 'easeOutQuad' });
|
transition: 'easeOutQuad' });
|
||||||
},
|
},
|
||||||
|
|
||||||
chromeWidth: function () {
|
|
||||||
return this.closeButton.width - this.closeButton._overlap;
|
|
||||||
},
|
|
||||||
|
|
||||||
chromeHeights: function () {
|
chromeHeights: function () {
|
||||||
return [this.closeButton.height - this.closeButton._overlap,
|
return [this.closeButton.height - this.closeButton._overlap,
|
||||||
this.title.height + this.title._spacing];
|
this.title.height + this.title._spacing];
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_repositionSelf: function() {
|
||||||
|
let [cloneX, cloneY, cloneWidth, cloneHeight] = this._windowClone.slot;
|
||||||
|
this.updatePositions(cloneX, cloneY, cloneWidth, cloneHeight, false);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @cloneX: x position of windowClone
|
* @cloneX: x position of windowClone
|
||||||
* @cloneY: y position of windowClone
|
* @cloneY: y position of windowClone
|
||||||
@ -550,9 +566,8 @@ const WindowOverlay = new Lang.Class({
|
|||||||
else
|
else
|
||||||
button.set_position(Math.floor(buttonX), Math.floor(buttonY));
|
button.set_position(Math.floor(buttonX), Math.floor(buttonY));
|
||||||
|
|
||||||
if (!title.fullWidth)
|
let [titleMinWidth, titleNatWidth] = title.get_preferred_width(-1);
|
||||||
title.fullWidth = title.width;
|
let titleWidth = Math.max(titleMinWidth, Math.min(titleNatWidth, cloneWidth));
|
||||||
let titleWidth = Math.min(title.fullWidth, cloneWidth);
|
|
||||||
|
|
||||||
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
|
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
|
||||||
let titleY = cloneY + cloneHeight + title._spacing;
|
let titleY = cloneY + cloneHeight + title._spacing;
|
||||||
@ -668,6 +683,280 @@ const WindowPositionFlags = {
|
|||||||
ANIMATE: 1 << 1
|
ANIMATE: 1 << 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const LayoutStrategy = new Lang.Class({
|
||||||
|
Name: 'LayoutStrategy',
|
||||||
|
Abstract: true,
|
||||||
|
|
||||||
|
_init: function(monitor, rowSpacing, columnSpacing, bottomPadding) {
|
||||||
|
this._monitor = monitor;
|
||||||
|
this._rowSpacing = rowSpacing;
|
||||||
|
this._columnSpacing = columnSpacing;
|
||||||
|
this._bottomPadding = bottomPadding;
|
||||||
|
},
|
||||||
|
|
||||||
|
_newRow: function() {
|
||||||
|
// Row properties:
|
||||||
|
//
|
||||||
|
// * x, y are the position of row, relative to area
|
||||||
|
//
|
||||||
|
// * width, height are the scaled versions of fullWidth, fullHeight
|
||||||
|
//
|
||||||
|
// * width also has the spacing in between windows. It's not in
|
||||||
|
// fullWidth, as the spacing is constant, whereas fullWidth is
|
||||||
|
// meant to be scaled
|
||||||
|
//
|
||||||
|
// * neither height/fullHeight have any sort of spacing or padding
|
||||||
|
//
|
||||||
|
// * if cellWidth is present, all windows in the row will occupy
|
||||||
|
// the space of cellWidth, centered.
|
||||||
|
return { x: 0, y: 0,
|
||||||
|
width: 0, height: 0,
|
||||||
|
fullWidth: 0, fullHeight: 0,
|
||||||
|
cellWidth: 0,
|
||||||
|
windows: [] };
|
||||||
|
},
|
||||||
|
|
||||||
|
// Compute the size and fancy scale for @window using the
|
||||||
|
// base scale, @scale.
|
||||||
|
//
|
||||||
|
// Returns a list structure: [ scaledWidth, scaledHeight, fancyScale ]
|
||||||
|
// where scaledWidth and scaledHeight are the window's
|
||||||
|
// width and height, scaled by fancyScale for convenience.
|
||||||
|
_computeWindowSizeAndScale: function(window, scale) {
|
||||||
|
let width = window.actor.width;
|
||||||
|
let height = window.actor.height;
|
||||||
|
let ratio;
|
||||||
|
|
||||||
|
if (width > height)
|
||||||
|
ratio = width / this._monitor.width;
|
||||||
|
else
|
||||||
|
ratio = height / this._monitor.height;
|
||||||
|
|
||||||
|
let fancyScale = (2 / (1 + ratio)) * scale;
|
||||||
|
return [width * fancyScale, height * fancyScale, fancyScale];
|
||||||
|
},
|
||||||
|
|
||||||
|
// Compute the size of each row, by assigning to the properties
|
||||||
|
// row.width, row.height, row.fullWidth, row.fullHeight, and
|
||||||
|
// (optionally) row.cellWidth, for each row in @layout.rows.
|
||||||
|
// This method is intended to be called by subclasses.
|
||||||
|
_computeRowSizes: function(layout) {
|
||||||
|
throw new Error('_computeRowSizes not implemented');
|
||||||
|
},
|
||||||
|
|
||||||
|
// Compute strategy-specific window slots for each window in
|
||||||
|
// @windows, given the @layout. The strategy may also use @layout
|
||||||
|
// as strategy-specific storage.
|
||||||
|
//
|
||||||
|
// This must calculate:
|
||||||
|
// * maxColumns - The maximum number of columns used by the layout.
|
||||||
|
// * gridWidth - The total width used by the grid, unscaled, unspaced.
|
||||||
|
// * gridHeight - The totial height used by the grid, unscaled, unspaced.
|
||||||
|
// * rows - A list of rows, which should be instantiated by _newRow.
|
||||||
|
computeLayout: function(windows, layout) {
|
||||||
|
throw new Error('computeLayout not implemented');
|
||||||
|
},
|
||||||
|
|
||||||
|
// Given @layout, compute the overall scale and space of the layout.
|
||||||
|
// The scale is the individual, non-fancy scale of each window, and
|
||||||
|
// the space is the percentage of the available area eventually
|
||||||
|
// used by the layout.
|
||||||
|
|
||||||
|
// This method does not return anything, but instead installs
|
||||||
|
// the properties "scale" and "space" on @layout directly.
|
||||||
|
//
|
||||||
|
// Make sure to call this methods before calling computeWindowSlots(),
|
||||||
|
// as it depends on the scale property installed in @layout here.
|
||||||
|
computeScaleAndSpace: function(layout) {
|
||||||
|
let area = layout.area;
|
||||||
|
|
||||||
|
let hspacing = (layout.maxColumns - 1) * this._columnSpacing;
|
||||||
|
let vspacing = (layout.numRows - 1) * this._rowSpacing + this._bottomPadding;
|
||||||
|
|
||||||
|
let spacedWidth = area.width - hspacing;
|
||||||
|
let spacedHeight = area.height - vspacing;
|
||||||
|
|
||||||
|
let horizontalScale = spacedWidth / layout.gridWidth;
|
||||||
|
let verticalScale = spacedHeight / layout.gridHeight;
|
||||||
|
|
||||||
|
// Thumbnails should be less than 70% of the original size
|
||||||
|
let scale = Math.min(horizontalScale, verticalScale, WINDOW_CLONE_MAXIMUM_SCALE);
|
||||||
|
|
||||||
|
let scaledLayoutWidth = layout.gridWidth * scale + hspacing;
|
||||||
|
let scaledLayoutHeight = layout.gridHeight * scale + vspacing;
|
||||||
|
let space = (scaledLayoutWidth * scaledLayoutHeight) / (area.width * area.height);
|
||||||
|
|
||||||
|
layout.scale = scale;
|
||||||
|
layout.space = space;
|
||||||
|
},
|
||||||
|
|
||||||
|
computeWindowSlots: function(layout, area) {
|
||||||
|
this._computeRowSizes(layout);
|
||||||
|
|
||||||
|
let { rows: rows, scale: scale, state: state } = layout;
|
||||||
|
|
||||||
|
let slots = [];
|
||||||
|
|
||||||
|
let y = 0;
|
||||||
|
for (let i = 0; i < rows.length; i++) {
|
||||||
|
let row = rows[i];
|
||||||
|
row.x = area.x + (area.width - row.width) / 2;
|
||||||
|
row.y = area.y + y;
|
||||||
|
y += row.height + this._rowSpacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
let height = y - this._rowSpacing + this._bottomPadding;
|
||||||
|
let baseY = (area.height - height) / 2;
|
||||||
|
|
||||||
|
for (let i = 0; i < rows.length; i++) {
|
||||||
|
let row = rows[i];
|
||||||
|
row.y += baseY;
|
||||||
|
let baseX = row.x;
|
||||||
|
for (let j = 0; j < row.windows.length; j++) {
|
||||||
|
let window = row.windows[j];
|
||||||
|
|
||||||
|
let [width, height, s] = this._computeWindowSizeAndScale(window, scale);
|
||||||
|
let y = row.y + row.height - height;
|
||||||
|
|
||||||
|
let x = baseX;
|
||||||
|
if (row.cellWidth) {
|
||||||
|
x += (row.cellWidth - width) / 2;
|
||||||
|
width = row.cellWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
slots.push([x, y, s]);
|
||||||
|
baseX += width + this._columnSpacing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return slots;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const UnalignedLayoutStrategy = new Lang.Class({
|
||||||
|
Name: 'UnalignedLayoutStrategy',
|
||||||
|
Extends: LayoutStrategy,
|
||||||
|
|
||||||
|
_computeRowSizes: function(layout) {
|
||||||
|
let { rows: rows, scale: scale } = layout;
|
||||||
|
for (let i = 0; i < rows.length; i++) {
|
||||||
|
let row = rows[i];
|
||||||
|
row.width = row.fullWidth * scale + (row.windows.length - 1) * this._columnSpacing;
|
||||||
|
row.height = row.fullHeight * scale;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_keepSameRow: function(row, window, width, idealRowWidth) {
|
||||||
|
if (row.fullWidth + width <= idealRowWidth)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
let oldRatio = row.fullWidth / idealRowWidth;
|
||||||
|
let newRatio = (row.fullWidth + width) / idealRowWidth;
|
||||||
|
|
||||||
|
if (Math.abs(1 - newRatio) < Math.abs(1 - oldRatio))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
computeLayout: function(windows, layout) {
|
||||||
|
let numRows = layout.numRows;
|
||||||
|
|
||||||
|
let rows = [];
|
||||||
|
let totalWidth = 0;
|
||||||
|
for (let i = 0; i < windows.length; i++) {
|
||||||
|
totalWidth += windows[i].actor.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
let idealRowWidth = totalWidth / numRows;
|
||||||
|
let windowIdx = 0;
|
||||||
|
for (let i = 0; i < numRows; i++) {
|
||||||
|
let col = 0;
|
||||||
|
let row = this._newRow();
|
||||||
|
rows.push(row);
|
||||||
|
|
||||||
|
for (; windowIdx < windows.length; windowIdx++) {
|
||||||
|
let window = windows[windowIdx];
|
||||||
|
let [width, height] = this._computeWindowSizeAndScale(window, 1);
|
||||||
|
row.fullHeight = Math.max(row.fullHeight, height);
|
||||||
|
|
||||||
|
// either new width is < idealWidth or new width is nearer from idealWidth then oldWidth
|
||||||
|
if (this._keepSameRow(row, window, width, idealRowWidth) || (i == numRows - 1)) {
|
||||||
|
row.windows.push(window);
|
||||||
|
row.fullWidth += width;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let gridHeight = 0;
|
||||||
|
let maxRow;
|
||||||
|
for (let i = 0; i < numRows; i++) {
|
||||||
|
let row = rows[i];
|
||||||
|
if (!maxRow || row.fullWidth > maxRow.fullWidth)
|
||||||
|
maxRow = row;
|
||||||
|
gridHeight += row.fullHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
layout.rows = rows;
|
||||||
|
layout.maxColumns = maxRow.windows.length;
|
||||||
|
layout.gridWidth = maxRow.fullWidth;
|
||||||
|
layout.gridHeight = gridHeight;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const GridLayoutStrategy = new Lang.Class({
|
||||||
|
Name: 'GridLayoutStrategy',
|
||||||
|
Extends: LayoutStrategy,
|
||||||
|
|
||||||
|
_computeRowSizes: function(layout) {
|
||||||
|
let { rows: rows, scale: scale } = layout;
|
||||||
|
|
||||||
|
let gridWidth = layout.numColumns * layout.maxWindowWidth;
|
||||||
|
let hspacing = (layout.numColumns - 1) * this._columnSpacing;
|
||||||
|
for (let i = 0; i < rows.length; i++) {
|
||||||
|
let row = rows[i];
|
||||||
|
row.fullWidth = layout.gridWidth;
|
||||||
|
row.fullHeight = layout.maxWindowHeight;
|
||||||
|
|
||||||
|
row.width = row.fullWidth * scale + hspacing;
|
||||||
|
row.height = row.fullHeight * scale;
|
||||||
|
row.cellWidth = layout.maxWindowWidth * scale;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computeLayout: function(windows, layout) {
|
||||||
|
let { numRows: numRows, numColumns: numColumns } = layout;
|
||||||
|
let rows = [];
|
||||||
|
let windowIdx = 0;
|
||||||
|
|
||||||
|
let maxWindowWidth = 0;
|
||||||
|
let maxWindowHeight = 0;
|
||||||
|
for (let i = 0; i < numRows; i++) {
|
||||||
|
let row = this._newRow();
|
||||||
|
rows.push(row);
|
||||||
|
for (; windowIdx < windows.length; windowIdx++) {
|
||||||
|
if (row.windows.length >= numColumns)
|
||||||
|
break;
|
||||||
|
|
||||||
|
let window = windows[windowIdx];
|
||||||
|
row.windows.push(window);
|
||||||
|
|
||||||
|
let [width, height] = this._computeWindowSizeAndScale(window, 1);
|
||||||
|
maxWindowWidth = Math.max(maxWindowWidth, width);
|
||||||
|
maxWindowHeight = Math.max(maxWindowHeight, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
layout.rows = rows;
|
||||||
|
layout.maxColumns = numColumns;
|
||||||
|
layout.gridWidth = numColumns * maxWindowWidth;
|
||||||
|
layout.gridHeight = numRows * maxWindowHeight;
|
||||||
|
layout.maxWindowWidth = maxWindowWidth;
|
||||||
|
layout.maxWindowHeight = maxWindowHeight;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @metaWorkspace: a #Meta.Workspace, or null
|
* @metaWorkspace: a #Meta.Workspace, or null
|
||||||
*/
|
*/
|
||||||
@ -689,7 +978,7 @@ const Workspace = new Lang.Class({
|
|||||||
// Without this the drop area will be overlapped.
|
// Without this the drop area will be overlapped.
|
||||||
this._windowOverlaysGroup.set_size(0, 0);
|
this._windowOverlaysGroup.set_size(0, 0);
|
||||||
|
|
||||||
this.actor = new Clutter.Group();
|
this.actor = new St.Widget({ style_class: 'window-picker' });
|
||||||
this.actor.set_size(0, 0);
|
this.actor.set_size(0, 0);
|
||||||
|
|
||||||
this._dropRect = new Clutter.Rectangle({ opacity: 0 });
|
this._dropRect = new Clutter.Rectangle({ opacity: 0 });
|
||||||
@ -729,6 +1018,8 @@ const Workspace = new Lang.Class({
|
|||||||
|
|
||||||
this._positionWindowsFlags = 0;
|
this._positionWindowsFlags = 0;
|
||||||
this._positionWindowsId = 0;
|
this._positionWindowsId = 0;
|
||||||
|
|
||||||
|
this._currentLayout = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
setGeometry: function(x, y, width, height) {
|
setGeometry: function(x, y, width, height) {
|
||||||
@ -763,225 +1054,6 @@ const Workspace = new Lang.Class({
|
|||||||
return this._windows.length == 0;
|
return this._windows.length == 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Only use this for n <= 20 say
|
|
||||||
_factorial: function(n) {
|
|
||||||
let result = 1;
|
|
||||||
for (let i = 2; i <= n; i++)
|
|
||||||
result *= i;
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* _permutation:
|
|
||||||
* @permutationIndex: An integer from [0, list.length!)
|
|
||||||
* @list: (inout): Array of objects to permute; will be modified in place
|
|
||||||
*
|
|
||||||
* Given an integer between 0 and length of array, re-order the array in-place
|
|
||||||
* into a permutation denoted by the index.
|
|
||||||
*/
|
|
||||||
_permutation: function(permutationIndex, list) {
|
|
||||||
for (let j = 2; j <= list.length; j++) {
|
|
||||||
let firstIndex = (permutationIndex % j);
|
|
||||||
let secondIndex = j - 1;
|
|
||||||
// Swap
|
|
||||||
let tmp = list[firstIndex];
|
|
||||||
list[firstIndex] = list[secondIndex];
|
|
||||||
list[secondIndex] = tmp;
|
|
||||||
permutationIndex = Math.floor(permutationIndex / j);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* _forEachPermutations:
|
|
||||||
* @list: Array
|
|
||||||
* @func: Function which takes a single array argument
|
|
||||||
*
|
|
||||||
* Call @func with each permutation of @list as an argument.
|
|
||||||
*/
|
|
||||||
_forEachPermutations: function(list, func) {
|
|
||||||
let nCombinations = this._factorial(list.length);
|
|
||||||
for (let i = 0; i < nCombinations; i++) {
|
|
||||||
let listCopy = list.concat();
|
|
||||||
this._permutation(i, listCopy);
|
|
||||||
func(listCopy);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* _computeWindowMotion:
|
|
||||||
* @actor: A #WindowClone's #ClutterActor
|
|
||||||
* @slot: An element of #POSITIONS
|
|
||||||
* @slotGeometry: Layout of @slot
|
|
||||||
*
|
|
||||||
* Returns a number corresponding to how much perceived motion
|
|
||||||
* would be involved in moving the window to the given slot.
|
|
||||||
* Currently this is the square of the distance between the
|
|
||||||
* centers.
|
|
||||||
*/
|
|
||||||
_computeWindowMotion: function (actor, slot) {
|
|
||||||
let [xCenter, yCenter, fraction] = slot;
|
|
||||||
let xDelta, yDelta, distanceSquared;
|
|
||||||
let actorWidth, actorHeight;
|
|
||||||
|
|
||||||
let x = actor.x;
|
|
||||||
let y = actor.y;
|
|
||||||
let scale = actor.scale_x;
|
|
||||||
|
|
||||||
if (actor._delegate.inDrag) {
|
|
||||||
x = actor._delegate.dragOrigX;
|
|
||||||
y = actor._delegate.dragOrigY;
|
|
||||||
scale = actor._delegate.dragOrigScale;
|
|
||||||
}
|
|
||||||
|
|
||||||
actorWidth = actor.width * scale;
|
|
||||||
actorHeight = actor.height * scale;
|
|
||||||
xDelta = x + actorWidth / 2.0 - xCenter * this._width - this._x;
|
|
||||||
yDelta = y + actorHeight / 2.0 - yCenter * this._height - this._y;
|
|
||||||
distanceSquared = xDelta * xDelta + yDelta * yDelta;
|
|
||||||
|
|
||||||
return distanceSquared;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* _orderWindowsPermutations:
|
|
||||||
*
|
|
||||||
* Iterate over all permutations of the windows, and determine the
|
|
||||||
* permutation which has the least total motion.
|
|
||||||
*/
|
|
||||||
_orderWindowsPermutations: function (clones, slots) {
|
|
||||||
let minimumMotionPermutation = null;
|
|
||||||
let minimumMotion = -1;
|
|
||||||
let permIndex = 0;
|
|
||||||
this._forEachPermutations(clones, Lang.bind(this, function (permutation) {
|
|
||||||
let motion = 0;
|
|
||||||
for (let i = 0; i < permutation.length; i++) {
|
|
||||||
let cloneActor = permutation[i].actor;
|
|
||||||
let slot = slots[i];
|
|
||||||
|
|
||||||
let delta = this._computeWindowMotion(cloneActor, slot);
|
|
||||||
|
|
||||||
motion += delta;
|
|
||||||
|
|
||||||
// Bail out early if we're already larger than the
|
|
||||||
// previous best
|
|
||||||
if (minimumMotionPermutation != null &&
|
|
||||||
motion > minimumMotion)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (minimumMotionPermutation == null || motion < minimumMotion) {
|
|
||||||
minimumMotionPermutation = permutation;
|
|
||||||
minimumMotion = motion;
|
|
||||||
}
|
|
||||||
permIndex++;
|
|
||||||
}));
|
|
||||||
return minimumMotionPermutation;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* _orderWindowsGreedy:
|
|
||||||
*
|
|
||||||
* Iterate over available slots in order, placing into each one the window
|
|
||||||
* we find with the smallest motion to that slot.
|
|
||||||
*/
|
|
||||||
_orderWindowsGreedy: function(clones, slots) {
|
|
||||||
let result = [];
|
|
||||||
let slotIndex = 0;
|
|
||||||
// Copy since we mutate below
|
|
||||||
let clonesCopy = clones.concat();
|
|
||||||
for (let i = 0; i < slots.length; i++) {
|
|
||||||
let slot = slots[i];
|
|
||||||
let minimumMotionIndex = -1;
|
|
||||||
let minimumMotion = -1;
|
|
||||||
for (let j = 0; j < clonesCopy.length; j++) {
|
|
||||||
let cloneActor = clonesCopy[j].actor;
|
|
||||||
let delta = this._computeWindowMotion(cloneActor, slot);
|
|
||||||
if (minimumMotionIndex == -1 || delta < minimumMotion) {
|
|
||||||
minimumMotionIndex = j;
|
|
||||||
minimumMotion = delta;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
result.push(clonesCopy[minimumMotionIndex]);
|
|
||||||
clonesCopy.splice(minimumMotionIndex, 1);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* _orderWindowsByMotionAndStartup:
|
|
||||||
* @windows: Array of #MetaWindow
|
|
||||||
* @slots: Array of slots
|
|
||||||
*
|
|
||||||
* Returns a copy of @windows, ordered in such a way that they require least motion
|
|
||||||
* to move to the final screen coordinates of @slots. Ties are broken in a stable
|
|
||||||
* fashion by the order in which the windows were created.
|
|
||||||
*/
|
|
||||||
_orderWindowsByMotionAndStartup: function(clones, slots) {
|
|
||||||
clones.sort(function(w1, w2) {
|
|
||||||
return w2.metaWindow.get_stable_sequence() - w1.metaWindow.get_stable_sequence();
|
|
||||||
});
|
|
||||||
if (clones.length <= POSITIONING_PERMUTATIONS_MAX)
|
|
||||||
return this._orderWindowsPermutations(clones, slots);
|
|
||||||
else
|
|
||||||
return this._orderWindowsGreedy(clones, slots);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* _getSlotGeometry:
|
|
||||||
* @slot: A layout slot
|
|
||||||
*
|
|
||||||
* Returns: the screen-relative [x, y, width, height]
|
|
||||||
* of a given window layout slot.
|
|
||||||
*/
|
|
||||||
_getSlotGeometry: function(slot) {
|
|
||||||
let [xCenter, yCenter, fraction] = slot;
|
|
||||||
|
|
||||||
let width = this._width * fraction;
|
|
||||||
let height = this._height * fraction;
|
|
||||||
|
|
||||||
let x = this._x + xCenter * this._width - width / 2 ;
|
|
||||||
let y = this._y + yCenter * this._height - height / 2;
|
|
||||||
|
|
||||||
return [x, y, width, height];
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* _computeWindowLayout:
|
|
||||||
* @metaWindow: A #MetaWindow
|
|
||||||
* @slot: A layout slot
|
|
||||||
*
|
|
||||||
* Given a window and slot to fit it in, compute its
|
|
||||||
* screen-relative [x, y, scale] where scale applies
|
|
||||||
* to both X and Y directions.
|
|
||||||
*/
|
|
||||||
_computeWindowLayout: function(metaWindow, slot) {
|
|
||||||
let [x, y, width, height] = this._getSlotGeometry(slot);
|
|
||||||
|
|
||||||
let rect = metaWindow.get_outer_rect();
|
|
||||||
let buttonOuterHeight, captionHeight;
|
|
||||||
let buttonOuterWidth = 0;
|
|
||||||
|
|
||||||
if (this._windowOverlays[0]) {
|
|
||||||
[buttonOuterHeight, captionHeight] = this._windowOverlays[0].chromeHeights();
|
|
||||||
buttonOuterWidth = this._windowOverlays[0].chromeWidth();
|
|
||||||
} else
|
|
||||||
[buttonOuterHeight, captionHeight] = [0, 0];
|
|
||||||
|
|
||||||
let scale = Math.min((width - buttonOuterWidth) / rect.width,
|
|
||||||
(height - buttonOuterHeight - captionHeight) / rect.height,
|
|
||||||
WINDOW_CLONE_MAXIMUM_SCALE);
|
|
||||||
|
|
||||||
x = Math.floor(x + (width - scale * rect.width) / 2);
|
|
||||||
|
|
||||||
// We want to center the window in case we have just one
|
|
||||||
if (metaWindow.get_workspace().n_windows == 1)
|
|
||||||
y = Math.floor(y + (height - scale * rect.height) / 2);
|
|
||||||
else
|
|
||||||
y = Math.floor(y + height - rect.height * scale - captionHeight);
|
|
||||||
|
|
||||||
return [x, y, scale];
|
|
||||||
},
|
|
||||||
|
|
||||||
setReservedSlot: function(clone) {
|
setReservedSlot: function(clone) {
|
||||||
if (this._reservedSlot == clone)
|
if (this._reservedSlot == clone)
|
||||||
return;
|
return;
|
||||||
@ -990,6 +1062,7 @@ const Workspace = new Lang.Class({
|
|||||||
clone = null;
|
clone = null;
|
||||||
|
|
||||||
this._reservedSlot = clone;
|
this._reservedSlot = clone;
|
||||||
|
this._currentLayout = null;
|
||||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1020,6 +1093,11 @@ const Workspace = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
let clones = this._windows.slice();
|
let clones = this._windows.slice();
|
||||||
|
|
||||||
|
clones.sort(function(a, b) {
|
||||||
|
return a.metaWindow.get_stable_sequence() - b.metaWindow.get_stable_sequence();
|
||||||
|
});
|
||||||
|
|
||||||
if (this._reservedSlot)
|
if (this._reservedSlot)
|
||||||
clones.push(this._reservedSlot);
|
clones.push(this._reservedSlot);
|
||||||
|
|
||||||
@ -1027,8 +1105,7 @@ const Workspace = new Lang.Class({
|
|||||||
let animate = flags & WindowPositionFlags.ANIMATE;
|
let animate = flags & WindowPositionFlags.ANIMATE;
|
||||||
|
|
||||||
// Start the animations
|
// Start the animations
|
||||||
let slots = this._computeAllWindowSlots(clones.length);
|
let slots = this._computeAllWindowSlots(clones);
|
||||||
clones = this._orderWindowsByMotionAndStartup(clones, slots);
|
|
||||||
|
|
||||||
let currentWorkspace = global.screen.get_active_workspace();
|
let currentWorkspace = global.screen.get_active_workspace();
|
||||||
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
||||||
@ -1045,10 +1122,11 @@ const Workspace = new Lang.Class({
|
|||||||
if (clone.inDrag)
|
if (clone.inDrag)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let [x, y, scale] = this._computeWindowLayout(metaWindow, slot);
|
let [x, y, scale] = slot;
|
||||||
|
|
||||||
if (overlay && initialPositioning)
|
if (overlay && initialPositioning)
|
||||||
overlay.hide();
|
overlay.hide();
|
||||||
|
|
||||||
if (animate && isOnCurrentWorkspace) {
|
if (animate && isOnCurrentWorkspace) {
|
||||||
if (!metaWindow.showing_on_its_workspace()) {
|
if (!metaWindow.showing_on_its_workspace()) {
|
||||||
/* Hidden windows should fade in and grow
|
/* Hidden windows should fade in and grow
|
||||||
@ -1072,6 +1150,8 @@ const Workspace = new Lang.Class({
|
|||||||
|
|
||||||
this._animateClone(clone, overlay, x, y, scale, initialPositioning);
|
this._animateClone(clone, overlay, x, y, scale, initialPositioning);
|
||||||
} else {
|
} else {
|
||||||
|
// cancel any active tweens (otherwise they might override our changes)
|
||||||
|
Tweener.removeTweens(clone.actor);
|
||||||
clone.actor.set_position(x, y);
|
clone.actor.set_position(x, y);
|
||||||
clone.actor.set_scale(scale, scale);
|
clone.actor.set_scale(scale, scale);
|
||||||
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
|
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
|
||||||
@ -1113,11 +1193,11 @@ const Workspace = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateWindowOverlayPositions: function(clone, overlay, x, y, scale, animate) {
|
_updateWindowOverlayPositions: function(clone, overlay, x, y, scale, animate) {
|
||||||
|
if (!overlay)
|
||||||
|
return;
|
||||||
|
|
||||||
let [cloneWidth, cloneHeight] = clone.actor.get_size();
|
let [cloneWidth, cloneHeight] = clone.actor.get_size();
|
||||||
cloneWidth = scale * cloneWidth;
|
overlay.updatePositions(x, y, cloneWidth * scale, cloneHeight * scale, animate);
|
||||||
cloneHeight = scale * cloneHeight;
|
|
||||||
if (overlay)
|
|
||||||
overlay.updatePositions(x, y, cloneWidth, cloneHeight, animate);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_showWindowOverlay: function(clone, overlay, fade) {
|
_showWindowOverlay: function(clone, overlay, fade) {
|
||||||
@ -1211,6 +1291,7 @@ const Workspace = new Lang.Class({
|
|||||||
this._cursorX = x;
|
this._cursorX = x;
|
||||||
this._cursorY = y;
|
this._cursorY = y;
|
||||||
|
|
||||||
|
this._currentLayout = null;
|
||||||
this._repositionWindowsId = Mainloop.timeout_add(750,
|
this._repositionWindowsId = Mainloop.timeout_add(750,
|
||||||
Lang.bind(this, this._delayedWindowRepositioning));
|
Lang.bind(this, this._delayedWindowRepositioning));
|
||||||
},
|
},
|
||||||
@ -1263,6 +1344,7 @@ const Workspace = new Lang.Class({
|
|||||||
clone.actor.set_position (this._x, this._y);
|
clone.actor.set_position (this._x, this._y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._currentLayout = null;
|
||||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1300,6 +1382,8 @@ const Workspace = new Lang.Class({
|
|||||||
|
|
||||||
// Animate the full-screen to Overview transition.
|
// Animate the full-screen to Overview transition.
|
||||||
zoomToOverview : function() {
|
zoomToOverview : function() {
|
||||||
|
this._currentLayout = null;
|
||||||
|
|
||||||
// Position and scale the windows.
|
// Position and scale the windows.
|
||||||
if (Main.overview.animationInProgress)
|
if (Main.overview.animationInProgress)
|
||||||
this.positionWindows(WindowPositionFlags.ANIMATE | WindowPositionFlags.INITIAL);
|
this.positionWindows(WindowPositionFlags.ANIMATE | WindowPositionFlags.INITIAL);
|
||||||
@ -1464,29 +1548,108 @@ const Workspace = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_computeWindowSlot : function(windowIndex, numberOfWindows) {
|
_isBetterLayout: function(oldLayout, newLayout) {
|
||||||
if (numberOfWindows in POSITIONS)
|
if (oldLayout.scale === undefined)
|
||||||
return POSITIONS[numberOfWindows][windowIndex];
|
return true;
|
||||||
|
|
||||||
// If we don't have a predefined scheme for this window count,
|
let spacePower = (newLayout.space - oldLayout.space) * LAYOUT_SPACE_WEIGHT;
|
||||||
// arrange the windows in a grid pattern.
|
let scalePower = (newLayout.scale - oldLayout.scale) * LAYOUT_SCALE_WEIGHT;
|
||||||
let gridWidth = Math.ceil(Math.sqrt(numberOfWindows));
|
|
||||||
let gridHeight = Math.ceil(numberOfWindows / gridWidth);
|
|
||||||
|
|
||||||
let fraction = 0.95 * (1. / gridWidth);
|
if (newLayout.scale > oldLayout.scale && newLayout.space > oldLayout.space) {
|
||||||
|
// Win win -- better scale and better space
|
||||||
let xCenter = (.5 / gridWidth) + ((windowIndex) % gridWidth) / gridWidth;
|
return true;
|
||||||
let yCenter = (.5 / gridHeight) + Math.floor((windowIndex / gridWidth)) / gridHeight;
|
} else if (newLayout.scale > oldLayout.scale && newLayout.space <= oldLayout.space) {
|
||||||
|
// Keep new layout only if scale gain outweights aspect space loss
|
||||||
return [xCenter, yCenter, fraction];
|
return scalePower > spacePower;
|
||||||
|
} else if (newLayout.scale <= oldLayout.scale && newLayout.space > oldLayout.space) {
|
||||||
|
// Keep new layout only if aspect space gain outweights scale loss
|
||||||
|
return spacePower > scalePower;
|
||||||
|
} else {
|
||||||
|
// Lose -- worse scale and space
|
||||||
|
return false;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_computeAllWindowSlots: function(totalWindows) {
|
_computeLayout: function(windows, area, rowSpacing, columnSpacing, bottomPadding) {
|
||||||
let slots = [];
|
// We look for the largest scale that allows us to fit the
|
||||||
for (let i = 0; i < totalWindows; i++) {
|
// largest row/tallest column on the workspace.
|
||||||
slots.push(this._computeWindowSlot(i, totalWindows));
|
|
||||||
|
let lastLayout = {};
|
||||||
|
|
||||||
|
for (let numRows = 1; ; numRows++) {
|
||||||
|
let numColumns = Math.ceil(windows.length / numRows);
|
||||||
|
|
||||||
|
// If adding a new row does not change column count just stop
|
||||||
|
// (for instance: 9 windows, with 3 rows -> 3 columns, 4 rows ->
|
||||||
|
// 3 columns as well => just use 3 rows then)
|
||||||
|
if (numColumns == lastLayout.numColumns)
|
||||||
|
break;
|
||||||
|
|
||||||
|
let strategyClass = numRows > 2 ? GridLayoutStrategy : UnalignedLayoutStrategy;
|
||||||
|
let strategy = new strategyClass(this._monitor, rowSpacing, columnSpacing, bottomPadding);
|
||||||
|
|
||||||
|
let layout = { area: area, strategy: strategy, numRows: numRows, numColumns: numColumns };
|
||||||
|
strategy.computeLayout(windows, layout);
|
||||||
|
strategy.computeScaleAndSpace(layout);
|
||||||
|
|
||||||
|
if (!this._isBetterLayout(lastLayout, layout))
|
||||||
|
break;
|
||||||
|
|
||||||
|
lastLayout = layout;
|
||||||
}
|
}
|
||||||
return slots;
|
|
||||||
|
return lastLayout;
|
||||||
|
},
|
||||||
|
|
||||||
|
_rectEqual: function(one, two) {
|
||||||
|
if (one == two)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return (one.x == two.x &&
|
||||||
|
one.y == two.y &&
|
||||||
|
one.width == two.width &&
|
||||||
|
one.height == two.height);
|
||||||
|
},
|
||||||
|
|
||||||
|
_computeAllWindowSlots: function(windows) {
|
||||||
|
let totalWindows = windows.length;
|
||||||
|
let node = this.actor.get_theme_node();
|
||||||
|
|
||||||
|
// Window grid spacing
|
||||||
|
let columnSpacing = node.get_length('-horizontal-spacing');
|
||||||
|
let rowSpacing = node.get_length('-vertical-spacing');
|
||||||
|
|
||||||
|
if (!totalWindows)
|
||||||
|
return [];
|
||||||
|
|
||||||
|
let closeButtonHeight, captionHeight;
|
||||||
|
if (this._windowOverlays.length) {
|
||||||
|
// All of the overlays have the same chrome sizes,
|
||||||
|
// so just pick the first one.
|
||||||
|
let overlay = this._windowOverlays[0];
|
||||||
|
[closeButtonHeight, captionHeight] = overlay.chromeHeights();
|
||||||
|
} else {
|
||||||
|
[closeButtonHeight, captionHeight] = [0, 0];
|
||||||
|
}
|
||||||
|
|
||||||
|
rowSpacing += captionHeight;
|
||||||
|
|
||||||
|
let area = { x: this._x, y: this._y, width: this._width, height: this._height };
|
||||||
|
area.y += closeButtonHeight;
|
||||||
|
area.height -= closeButtonHeight;
|
||||||
|
|
||||||
|
if (!this._currentLayout)
|
||||||
|
this._currentLayout = this._computeLayout(windows, area, rowSpacing, columnSpacing, captionHeight);
|
||||||
|
|
||||||
|
let layout = this._currentLayout;
|
||||||
|
let strategy = layout.strategy;
|
||||||
|
|
||||||
|
if (!this._rectEqual(area, layout.area)) {
|
||||||
|
layout.area = area;
|
||||||
|
strategy.computeScaleAndSpace(layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
return strategy.computeWindowSlots(layout, area);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onCloneSelected : function (clone, time) {
|
_onCloneSelected : function (clone, time) {
|
||||||
|
@ -620,9 +620,7 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
if (!source.realWindow && !source.shellWorkspaceLaunch && source != Main.xdndHandler)
|
if (!source.realWindow && !source.shellWorkspaceLaunch && source != Main.xdndHandler)
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
if (!Meta.prefs_get_dynamic_workspaces())
|
let canCreateWorkspaces = Meta.prefs_get_dynamic_workspaces();
|
||||||
return DND.DragMotionResult.CONTINUE;
|
|
||||||
|
|
||||||
let spacing = this.actor.get_theme_node().get_length('spacing');
|
let spacing = this.actor.get_theme_node().get_length('spacing');
|
||||||
|
|
||||||
this._dropWorkspace = -1;
|
this._dropWorkspace = -1;
|
||||||
@ -647,7 +645,7 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
if (i == this._dropPlaceholderPos)
|
if (i == this._dropPlaceholderPos)
|
||||||
targetBottom += this._dropPlaceholder.get_height();
|
targetBottom += this._dropPlaceholder.get_height();
|
||||||
|
|
||||||
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler) {
|
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler && canCreateWorkspaces) {
|
||||||
placeholderPos = i;
|
placeholderPos = i;
|
||||||
break;
|
break;
|
||||||
} else if (y > targetBottom && y <= nextTargetTop) {
|
} else if (y > targetBottom && y <= nextTargetTop) {
|
||||||
@ -785,7 +783,7 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
this._indicator.raise_top();
|
this._indicator.raise_top();
|
||||||
},
|
},
|
||||||
|
|
||||||
removeThumbmails: function(start, count) {
|
removeThumbnails: function(start, count) {
|
||||||
let currentPos = 0;
|
let currentPos = 0;
|
||||||
for (let k = 0; k < this._thumbnails.length; k++) {
|
for (let k = 0; k < this._thumbnails.length; k++) {
|
||||||
let thumbnail = this._thumbnails[k];
|
let thumbnail = this._thumbnails[k];
|
||||||
|
@ -51,7 +51,6 @@ const WorkspacesView = new Lang.Class({
|
|||||||
this._clipY = 0;
|
this._clipY = 0;
|
||||||
this._clipWidth = 0;
|
this._clipWidth = 0;
|
||||||
this._clipHeight = 0;
|
this._clipHeight = 0;
|
||||||
this._workspaceRatioSpacing = 0;
|
|
||||||
this._spacing = 0;
|
this._spacing = 0;
|
||||||
this._animating = false; // tweening
|
this._animating = false; // tweening
|
||||||
this._scrolling = false; // swipe-scrolling
|
this._scrolling = false; // swipe-scrolling
|
||||||
@ -72,6 +71,7 @@ const WorkspacesView = new Lang.Class({
|
|||||||
this._workspaces[w].actor.reparent(this.actor);
|
this._workspaces[w].actor.reparent(this.actor);
|
||||||
this._workspaces[activeWorkspaceIndex].actor.raise_top();
|
this._workspaces[activeWorkspaceIndex].actor.raise_top();
|
||||||
|
|
||||||
|
this._extraWorkspaces = [];
|
||||||
this._updateExtraWorkspaces();
|
this._updateExtraWorkspaces();
|
||||||
|
|
||||||
// Position/scale the desktop windows and their children after the
|
// Position/scale the desktop windows and their children after the
|
||||||
@ -83,8 +83,6 @@ const WorkspacesView = new Lang.Class({
|
|||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
for (let w = 0; w < this._workspaces.length; w++)
|
for (let w = 0; w < this._workspaces.length; w++)
|
||||||
this._workspaces[w].zoomToOverview();
|
this._workspaces[w].zoomToOverview();
|
||||||
if (!this._extraWorkspaces)
|
|
||||||
return;
|
|
||||||
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
||||||
this._extraWorkspaces[w].zoomToOverview();
|
this._extraWorkspaces[w].zoomToOverview();
|
||||||
}));
|
}));
|
||||||
@ -124,7 +122,6 @@ const WorkspacesView = new Lang.Class({
|
|||||||
if (!this._settings.get_boolean('workspaces-only-on-primary'))
|
if (!this._settings.get_boolean('workspaces-only-on-primary'))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._extraWorkspaces = [];
|
|
||||||
let monitors = Main.layoutManager.monitors;
|
let monitors = Main.layoutManager.monitors;
|
||||||
for (let i = 0; i < monitors.length; i++) {
|
for (let i = 0; i < monitors.length; i++) {
|
||||||
if (i == Main.layoutManager.primaryIndex)
|
if (i == Main.layoutManager.primaryIndex)
|
||||||
@ -139,23 +136,20 @@ const WorkspacesView = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_destroyExtraWorkspaces: function() {
|
_destroyExtraWorkspaces: function() {
|
||||||
if (!this._extraWorkspaces)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (let m = 0; m < this._extraWorkspaces.length; m++)
|
for (let m = 0; m < this._extraWorkspaces.length; m++)
|
||||||
this._extraWorkspaces[m].destroy();
|
this._extraWorkspaces[m].destroy();
|
||||||
this._extraWorkspaces = null;
|
this._extraWorkspaces = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
setGeometry: function(x, y, width, height, spacing) {
|
setGeometry: function(x, y, width, height) {
|
||||||
if (this._x == x && this._y == y &&
|
if (this._x == x && this._y == y &&
|
||||||
this._width == width && this._height == height)
|
this._width == width && this._height == height)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._width = width;
|
this._width = width;
|
||||||
this._height = height;
|
this._height = height;
|
||||||
this._x = x;
|
this._x = x;
|
||||||
this._y = y;
|
this._y = y;
|
||||||
this._workspaceRatioSpacing = spacing;
|
|
||||||
|
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].setGeometry(x, y, width, height);
|
this._workspaces[i].setGeometry(x, y, width, height);
|
||||||
@ -191,8 +185,6 @@ const WorkspacesView = new Lang.Class({
|
|||||||
|
|
||||||
for (let w = 0; w < this._workspaces.length; w++)
|
for (let w = 0; w < this._workspaces.length; w++)
|
||||||
this._workspaces[w].zoomFromOverview();
|
this._workspaces[w].zoomFromOverview();
|
||||||
if (!this._extraWorkspaces)
|
|
||||||
return;
|
|
||||||
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
||||||
this._extraWorkspaces[w].zoomFromOverview();
|
this._extraWorkspaces[w].zoomFromOverview();
|
||||||
},
|
},
|
||||||
@ -204,8 +196,6 @@ const WorkspacesView = new Lang.Class({
|
|||||||
syncStacking: function(stackIndices) {
|
syncStacking: function(stackIndices) {
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].syncStacking(stackIndices);
|
this._workspaces[i].syncStacking(stackIndices);
|
||||||
if (!this._extraWorkspaces)
|
|
||||||
return;
|
|
||||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||||
this._extraWorkspaces[i].syncStacking(stackIndices);
|
this._extraWorkspaces[i].syncStacking(stackIndices);
|
||||||
},
|
},
|
||||||
@ -234,7 +224,7 @@ const WorkspacesView = new Lang.Class({
|
|||||||
|
|
||||||
Tweener.removeTweens(workspace.actor);
|
Tweener.removeTweens(workspace.actor);
|
||||||
|
|
||||||
let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing);
|
let y = (w - active) * (this._height + this._spacing);
|
||||||
|
|
||||||
if (showAnimation) {
|
if (showAnimation) {
|
||||||
let params = { y: y,
|
let params = { y: y,
|
||||||
@ -376,9 +366,6 @@ const WorkspacesView = new Lang.Class({
|
|||||||
this._firstDragMotion = false;
|
this._firstDragMotion = false;
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
||||||
if (!this._extraWorkspaces)
|
|
||||||
return DND.DragMotionResult.CONTINUE;
|
|
||||||
|
|
||||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||||
this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
||||||
}
|
}
|
||||||
@ -392,9 +379,6 @@ const WorkspacesView = new Lang.Class({
|
|||||||
|
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].setReservedSlot(null);
|
this._workspaces[i].setReservedSlot(null);
|
||||||
|
|
||||||
if (!this._extraWorkspaces)
|
|
||||||
return;
|
|
||||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||||
this._extraWorkspaces[i].setReservedSlot(null);
|
this._extraWorkspaces[i].setReservedSlot(null);
|
||||||
},
|
},
|
||||||
@ -541,6 +525,16 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
this._notifyOpacityId = 0;
|
this._notifyOpacityId = 0;
|
||||||
this._swipeScrollBeginId = 0;
|
this._swipeScrollBeginId = 0;
|
||||||
this._swipeScrollEndId = 0;
|
this._swipeScrollEndId = 0;
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
|
||||||
|
this._settings.connect('changed::dynamic-workspaces',
|
||||||
|
Lang.bind(this, this._updateSwitcherVisibility));
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateSwitcherVisibility: function() {
|
||||||
|
this._thumbnailsBox.actor.visible =
|
||||||
|
this._settings.get_boolean('dynamic-workspaces') ||
|
||||||
|
global.screen.n_workspaces > 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
@ -563,6 +557,7 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
|
|
||||||
this._controls.show();
|
this._controls.show();
|
||||||
this._thumbnailsBox.show();
|
this._thumbnailsBox.show();
|
||||||
|
this._updateSwitcherVisibility();
|
||||||
|
|
||||||
this._updateWorkspacesViews();
|
this._updateWorkspacesViews();
|
||||||
|
|
||||||
@ -864,28 +859,23 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||||
|
|
||||||
let clipWidth = width - controlsVisible;
|
let clipWidth = width - controlsVisible;
|
||||||
let clipHeight = (fullHeight / fullWidth) * clipWidth;
|
let clipHeight = fullHeight;
|
||||||
let clipX = rtl ? x + controlsVisible : x;
|
let clipX = rtl ? x + controlsVisible : x;
|
||||||
let clipY = y + (fullHeight - clipHeight) / 2;
|
let clipY = y + (fullHeight - clipHeight) / 2;
|
||||||
|
|
||||||
let widthAdjust = this._zoomOut ? controlsNatural : controlsVisible;
|
let widthAdjust = this._zoomOut ? controlsNatural : controlsVisible;
|
||||||
|
widthAdjust += Main.overview._spacing;
|
||||||
width -= widthAdjust;
|
width -= widthAdjust;
|
||||||
if (rtl)
|
if (rtl)
|
||||||
x += widthAdjust;
|
x += widthAdjust;
|
||||||
|
|
||||||
height = (fullHeight / fullWidth) * width;
|
|
||||||
let difference = fullHeight - height;
|
|
||||||
y += difference / 2;
|
|
||||||
|
|
||||||
|
|
||||||
let monitors = Main.layoutManager.monitors;
|
let monitors = Main.layoutManager.monitors;
|
||||||
let m = 0;
|
let m = 0;
|
||||||
for (let i = 0; i < monitors.length; i++) {
|
for (let i = 0; i < monitors.length; i++) {
|
||||||
if (i == this._primaryIndex) {
|
if (i == this._primaryIndex) {
|
||||||
this._workspacesViews[m].setClipRect(clipX, clipY,
|
this._workspacesViews[m].setClipRect(clipX, clipY,
|
||||||
clipWidth, clipHeight);
|
clipWidth, clipHeight);
|
||||||
this._workspacesViews[m].setGeometry(x, y, width, height,
|
this._workspacesViews[m].setGeometry(x, y, width, height);
|
||||||
difference);
|
|
||||||
m++;
|
m++;
|
||||||
} else if (!this._workspacesOnlyOnPrimary) {
|
} else if (!this._workspacesOnlyOnPrimary) {
|
||||||
this._workspacesViews[m].setClipRect(monitors[i].x,
|
this._workspacesViews[m].setClipRect(monitors[i].x,
|
||||||
@ -895,7 +885,7 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
this._workspacesViews[m].setGeometry(monitors[i].x,
|
this._workspacesViews[m].setGeometry(monitors[i].x,
|
||||||
monitors[i].y,
|
monitors[i].y,
|
||||||
monitors[i].width,
|
monitors[i].width,
|
||||||
monitors[i].height, 0);
|
monitors[i].height);
|
||||||
m++;
|
m++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -932,16 +922,17 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
let monitors = Main.layoutManager.monitors;
|
let monitors = Main.layoutManager.monitors;
|
||||||
let m = 0;
|
let m = 0;
|
||||||
for (let i = 0; i < monitors.length; i++) {
|
for (let i = 0; i < monitors.length; i++) {
|
||||||
if (this._workspacesOnlyOnPrimaryChanged &&
|
if (this._workspacesOnlyOnPrimary &&
|
||||||
i != this._primaryIndex)
|
i != this._primaryIndex)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Assume workspaces are only added at the end
|
// Assume workspaces are only added at the end
|
||||||
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
|
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
|
||||||
let metaWorkspace = global.screen.get_workspace_by_index(w);
|
let metaWorkspace = global.screen.get_workspace_by_index(w);
|
||||||
this._workspaces[m++][w] =
|
this._workspaces[m][w] =
|
||||||
new Workspace.Workspace(metaWorkspace, i);
|
new Workspace.Workspace(metaWorkspace, i);
|
||||||
}
|
}
|
||||||
|
m++;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._thumbnailsBox.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
|
this._thumbnailsBox.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
|
||||||
@ -968,12 +959,13 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this._thumbnailsBox.removeThumbmails(removedIndex, removedNum);
|
this._thumbnailsBox.removeThumbnails(removedIndex, removedNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||||
this._workspacesViews[i].updateWorkspaces(oldNumWorkspaces,
|
this._workspacesViews[i].updateWorkspaces(oldNumWorkspaces,
|
||||||
newNumWorkspaces);
|
newNumWorkspaces);
|
||||||
|
this._updateSwitcherVisibility();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateZoom : function() {
|
_updateZoom : function() {
|
||||||
|
@ -1 +1,19 @@
|
|||||||
dist_man_MANS = gnome-shell.1
|
XSLTPROC_FLAGS = \
|
||||||
|
--nonet \
|
||||||
|
--stringparam man.output.quietly 1 \
|
||||||
|
--stringparam funcsynopsis.style ansi \
|
||||||
|
--stringparam man.th.extra1.suppress 1 \
|
||||||
|
--stringparam man.authors.section.enabled 0 \
|
||||||
|
--stringparam man.copyright.section.enabled 0
|
||||||
|
|
||||||
|
.xml.1:
|
||||||
|
$(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
|
||||||
|
|
||||||
|
man_MANS = \
|
||||||
|
gnome-shell.1
|
||||||
|
|
||||||
|
xml_files = $(man_MANS:.1=.xml)
|
||||||
|
|
||||||
|
EXTRA_DIST = $(xml_files)
|
||||||
|
|
||||||
|
DISTCLEANFILES = $(man_MANS)
|
||||||
|
@ -1,94 +0,0 @@
|
|||||||
.\" Copyright (c) 2009, Marcelo Jorge Vieira (metal) <metal@alucinados.com>
|
|
||||||
.\"
|
|
||||||
.\" This is free documentation; you can redistribute it and/or
|
|
||||||
.\" modify it under the terms of the GNU General Public License as
|
|
||||||
.\" published by the Free Software Foundation; either version 2 of
|
|
||||||
.\" the License, or (at your option) any later version.
|
|
||||||
.\"
|
|
||||||
.\" The GNU General Public License's references to "object code"
|
|
||||||
.\" and "executables" are to be interpreted as the output of any
|
|
||||||
.\" document formatting or typesetting system, including
|
|
||||||
.\" intermediate and printed output.
|
|
||||||
.\"
|
|
||||||
.\" This manual is distributed in the hope that it will be useful,
|
|
||||||
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
.\" GNU General Public License for more details.
|
|
||||||
.\"
|
|
||||||
.\" You should have received a copy of the GNU General Public
|
|
||||||
.\" License along with this manual; if not, write to the Free
|
|
||||||
.\" Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
.\" Boston, MA 02111-1301 USA.
|
|
||||||
.TH GNOME-SHELL 1
|
|
||||||
.SH NAME
|
|
||||||
gnome-shell \- Graphical shell for the GNOME desktop
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B gnome-shell [options]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
GNOME Shell provides core user interface functions for the GNOME 3
|
|
||||||
desktop, like switching to windows and launching applications. GNOME
|
|
||||||
Shell takes advantage of the capabilities of modern graphics hardware
|
|
||||||
and introduces innovative user interface concepts to provide a
|
|
||||||
visually attractive and easy to use experience.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-\-replace
|
|
||||||
Replace the running window manager
|
|
||||||
.br
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-\-sm-disable
|
|
||||||
Disable connection to the session manager
|
|
||||||
.br
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-\-sm-client-id=ID
|
|
||||||
Specify session management ID
|
|
||||||
.br
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-\-sm-save-file=FILE
|
|
||||||
Initialize session from savefile
|
|
||||||
.br
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-\-screen=SCREEN
|
|
||||||
X screen to use
|
|
||||||
.br
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-d, \-\-display=DISPLAY
|
|
||||||
X display to use
|
|
||||||
.br
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-\-sync
|
|
||||||
Make X calls synchronous
|
|
||||||
.br
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-\-version
|
|
||||||
Print version and exit
|
|
||||||
.br
|
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-\-help
|
|
||||||
Display help and exit
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SH BUGS
|
|
||||||
The bug tracker can be reached by visiting the website
|
|
||||||
\fIhttps://bugzilla.gnome.org/buglist.cgi?product=gnome-shell\fR
|
|
||||||
|
|
||||||
Before sending a bug report, please verify that you have the latest
|
|
||||||
version of gnome-shell. Many bugs (major and minor) are fixed at each
|
|
||||||
release, and if yours is out of date, the problem may already have
|
|
||||||
been solved.
|
|
||||||
|
|
||||||
.SH ADDITIONAL INFORMATION
|
|
||||||
|
|
||||||
For further information, visit the website \fIhttp://live.gnome.org/GnomeShell\fR
|
|
159
man/gnome-shell.xml
Normal file
159
man/gnome-shell.xml
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
<?xml version='1.0'?>
|
||||||
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||||
|
|
||||||
|
<refentry id="gnome-shell">
|
||||||
|
|
||||||
|
<refentryinfo>
|
||||||
|
<title>gnome-shell</title>
|
||||||
|
<productname>gnome-shell</productname>
|
||||||
|
|
||||||
|
<authorgroup>
|
||||||
|
<author>
|
||||||
|
<contrib>wrote the original gnome-shell man page</contrib>
|
||||||
|
<firstname>Marcelo Jorge</firstname>
|
||||||
|
<surname>Vieira</surname>
|
||||||
|
<email>metal@alucinados.com</email>
|
||||||
|
</author>
|
||||||
|
</authorgroup>
|
||||||
|
|
||||||
|
</refentryinfo>
|
||||||
|
|
||||||
|
<refmeta>
|
||||||
|
<refentrytitle>gnome-shell</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</refmeta>
|
||||||
|
|
||||||
|
<refnamediv>
|
||||||
|
<refname>gnome-shell</refname>
|
||||||
|
<refpurpose>Graphical shell for the GNOME desktop</refpurpose>
|
||||||
|
</refnamediv>
|
||||||
|
|
||||||
|
<refsynopsisdiv>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>gnome-shell <arg choice="opt" rep="repeat">OPTION</arg></command>
|
||||||
|
</cmdsynopsis>
|
||||||
|
</refsynopsisdiv>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Description</title>
|
||||||
|
|
||||||
|
<para>GNOME shell provides core user
|
||||||
|
interface functions for the GNOME 3 desktop, like switching
|
||||||
|
to windows and launching applications. GNOME shell takes
|
||||||
|
advantage of the capabilities of modern graphics hardware
|
||||||
|
and introduces innovative user interface concepts to provide
|
||||||
|
a visually attractive and easy to use experience.</para>
|
||||||
|
|
||||||
|
<para>gnome-shell is a required component of
|
||||||
|
the GNOME desktop, i.e. it is listed in the
|
||||||
|
RequiredComponents field of
|
||||||
|
<filename>/usr/share/gnome-session/sessions/gnome.session</filename>.
|
||||||
|
It is started in the window manager phase of the session.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Options</title>
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-r</option>, <option>--replace</option></term>
|
||||||
|
|
||||||
|
<listitem><para>Replace the running window manager</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--sm-disable</option></term>
|
||||||
|
|
||||||
|
<listitem><para>Disable connection to the session manager</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--sm-client-id=<replaceable>ID</replaceable></option></term>
|
||||||
|
|
||||||
|
<listitem><para>Specify session management <replaceable>ID</replaceable></para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--sm-save-file=<replaceable>FILE</replaceable></option></term>
|
||||||
|
|
||||||
|
<listitem><para>Initialize session from <replaceable>FILE</replaceable></para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--screen=<replaceable>SCREEN</replaceable></option></term>
|
||||||
|
|
||||||
|
<listitem><para>X screen to use</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-d</option>, <option>--display=<replaceable>DISPLAY</replaceable></option></term>
|
||||||
|
|
||||||
|
<listitem><para>X Display to use</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--sync</option></term>
|
||||||
|
|
||||||
|
<listitem><para>Make X calls synchronous</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--version</option></term>
|
||||||
|
|
||||||
|
<listitem><para>Print version and exit</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--help</option></term>
|
||||||
|
|
||||||
|
<listitem><para>Display help and exit</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--mode=<replaceable>MODE</replaceable></option></term>
|
||||||
|
|
||||||
|
<listitem><para>Use a specific mode, e.g. "gdm" for login screen</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--list-modes</option></term>
|
||||||
|
|
||||||
|
<listitem><para>List possible modes and exit</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
</variablelist>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Files</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<filename>/usr/share/gnome-session/sessions/gnome.session</filename>,
|
||||||
|
<filename>/usr/share/applications/gnome-shell.desktop</filename>.</para>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Bugs</title>
|
||||||
|
|
||||||
|
<para>The bug tracker can be reached by visiting the
|
||||||
|
website <ulink url="https://bugzilla.gnome.org/buglist.cgi?product=gnome-shell">https://bugzilla.gnome.org/buglist.cgi?product=gnome-shell</ulink>.
|
||||||
|
Before sending a bug report, please verify that you have
|
||||||
|
the latest version of gnome-shell. Many bugs (major and
|
||||||
|
minor) are fixed at each release, and if yours is out of
|
||||||
|
date, the problem may already have been solved.</para>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Additional Information</title>
|
||||||
|
|
||||||
|
<para>For further information, visit the website
|
||||||
|
<ulink url="http://live.gnome.org/GnomeShell">http://live.gnome.org/GnomeShell</ulink>.</para>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
</refentry>
|
@ -34,6 +34,7 @@ kk
|
|||||||
kn
|
kn
|
||||||
ko
|
ko
|
||||||
ku
|
ku
|
||||||
|
ky
|
||||||
lt
|
lt
|
||||||
lv
|
lv
|
||||||
ml
|
ml
|
||||||
|
378
po/ar.po
378
po/ar.po
@ -3,12 +3,13 @@
|
|||||||
# Khaled Hosny <khaledhosny@eglug.org>, 2009, 2010, 2011, 2012.
|
# Khaled Hosny <khaledhosny@eglug.org>, 2009, 2010, 2011, 2012.
|
||||||
# Muhammed Abd-ulaziz Abd-ullah <thenubianmuha_idrecy@yahoo.co.uk>, 2012.
|
# Muhammed Abd-ulaziz Abd-ullah <thenubianmuha_idrecy@yahoo.co.uk>, 2012.
|
||||||
# Abderrahim Kitouni <a.kitouni@gmail.com>, 2012.
|
# Abderrahim Kitouni <a.kitouni@gmail.com>, 2012.
|
||||||
|
# Ibrahim Saed <ibraheem5000@gmail.com>, 2012.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: HEAD\n"
|
"Project-Id-Version: HEAD\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-09-05 07:06+0200\n"
|
"POT-Creation-Date: 2012-09-25 11:04+0200\n"
|
||||||
"PO-Revision-Date: 2012-09-05 07:08+0200\n"
|
"PO-Revision-Date: 2012-09-25 11:05+0200\n"
|
||||||
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
||||||
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
||||||
"Language: ar\n"
|
"Language: ar\n"
|
||||||
@ -21,6 +22,22 @@ msgstr ""
|
|||||||
"&& n%100<=10 ? 3: n%100>=11 ? 4 : 5;\n"
|
"&& n%100<=10 ? 3: n%100>=11 ? 4 : 5;\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "لقطات الشاشة"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "سجّل فديو للشاشة"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "النظام"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "أظهر لوحة الرسائل"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "صدفة جنوم"
|
msgstr "صدفة جنوم"
|
||||||
@ -40,13 +57,15 @@ msgstr "اضبط امتدادات صدفة جنوم"
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
msgstr ""
|
msgstr "تمكين الأدوات الداخلية المفيدة للمطورين والمختبرين من Alt-F2"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
"dialog."
|
"dialog."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"السماح بالوصول إلى التنقيح الداخلي ومراقبة الأدوات باستخدام نافذة حوار Alt-"
|
||||||
|
"F2."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||||
msgid "Uuids of extensions to enable"
|
msgid "Uuids of extensions to enable"
|
||||||
@ -62,7 +81,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||||
msgid "Whether to collect stats about applications usage"
|
msgid "Whether to collect stats about applications usage"
|
||||||
msgstr ""
|
msgstr "ما إذا كنت ترغب في تجميع الحالات عن استخدام التطبيقات"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -83,84 +102,80 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
msgid "disabled OpenSearch providers"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr ""
|
msgstr "التأريخ لنافذة حوار الأمر (Alt-F2)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||||
msgid "History for command (Alt-F2) dialog"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last IM presence explicitly set by the user. "
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
"The value here is from the TpConnectionPresenceType enumeration."
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last session presence status for the user. The "
|
"Internally used to store the last session presence status for the user. The "
|
||||||
"value here is from the GsmPresenceStatus enumeration."
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr ""
|
msgstr "اعرض تاريخ الأسبوع في التقويم"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
msgid "Keybinding to toggle the visibility of the message tray"
|
msgid "Keybinding to toggle the visibility of the message tray"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid "Keybinding to toggle the visibility of the message tray."
|
msgid "Keybinding to toggle the visibility of the message tray."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "Keybinding to toggle the screen recorder"
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr ""
|
msgstr "أي لوحة مفاتيح ترغب باستخدامها"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
|
msgid "The type of keyboard to use."
|
||||||
|
msgstr "نوع لوحة المفاتيح التي ترغب باستخدامها."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid "The type of keyboard to use."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -170,16 +185,16 @@ msgid ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -199,7 +214,7 @@ msgstr "امتداد"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "اختر امتدادا لضبطه من القائمة أعلاه."
|
msgstr "اختر امتدادا لضبطه من القائمة أعلاه."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:527
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "الجلسة..."
|
msgstr "الجلسة..."
|
||||||
|
|
||||||
@ -218,7 +233,7 @@ msgstr "غير مدرج؟"
|
|||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:134
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ألغِ"
|
msgstr "ألغِ"
|
||||||
|
|
||||||
@ -231,27 +246,36 @@ msgstr "ادخل"
|
|||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "نافذة الولوج"
|
msgstr "نافذة الولوج"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:775
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "الطاقة"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||||
|
#: ../js/ui/userMenu.js:778
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "علّق"
|
msgstr "علّق"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "أعِد التشغيل"
|
msgstr "أعِد التشغيل"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||||
#: ../js/ui/userMenu.js:774
|
#: ../js/ui/userMenu.js:777
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "أطفئ الحاسوب"
|
msgstr "أطفئ الحاسوب"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "خطأ في الاستيثاق"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(أو مرر إصبع)"
|
msgstr "(أو مرر إصبع)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(مثلا مستخدم أو %s)"
|
msgstr "(مثلا مستخدم أو %s)"
|
||||||
@ -452,16 +476,16 @@ msgstr "هذا الأسبوع"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "الأسبوع القادم"
|
msgstr "الأسبوع القادم"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:264
|
#: ../js/ui/components/autorunManager.js:278
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "الأجهزة المنفصلة"
|
msgstr "الأجهزة المنفصلة"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:557
|
#: ../js/ui/components/autorunManager.js:575
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "افتح باستخدام %s"
|
msgstr "افتح باستخدام %s"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:583
|
#: ../js/ui/components/autorunManager.js:601
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "أخرج"
|
msgstr "أخرج"
|
||||||
|
|
||||||
@ -605,38 +629,46 @@ msgstr "طلب اشتراك"
|
|||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "خطأ في الاتصال"
|
msgstr "خطأ في الاتصال"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Unmute"
|
||||||
|
msgstr "أطلِق الصوت"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Mute"
|
||||||
|
msgstr "أصمِت"
|
||||||
|
|
||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/components/telepathyClient.js:926
|
#: ../js/ui/components/telepathyClient.js:948
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "أُرسلت يوم <b>%A</b> الساعة <b>%l:%M</b>"
|
msgstr "أُرسلت يوم <b>%A</b> الساعة <b>%l:%M</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/components/telepathyClient.js:932
|
#: ../js/ui/components/telepathyClient.js:954
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "أُرْسِلت يوم <b>%A %d %B</b>"
|
msgstr "أُرْسِلت يوم <b>%A %d %B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/components/telepathyClient.js:937
|
#: ../js/ui/components/telepathyClient.js:959
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "أُرْسِلت يوم <b>%A</b>، <b>%d %B</b>، %Y"
|
msgstr "أُرْسِلت يوم <b>%A</b>، <b>%d %B</b>، %Y"
|
||||||
|
|
||||||
#. 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:966
|
#: ../js/ui/components/telepathyClient.js:988
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "غيّر %s اسمه إلى %s"
|
msgstr "غيّر %s اسمه إلى %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:1066
|
#: ../js/ui/components/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "دعوة إلى %s"
|
msgstr "دعوة إلى %s"
|
||||||
@ -644,42 +676,42 @@ msgstr "دعوة إلى %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:1074
|
#: ../js/ui/components/telepathyClient.js:1096
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "يدعوك %s للانضمام إلى %s"
|
msgstr "يدعوك %s للانضمام إلى %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1076
|
#: ../js/ui/components/telepathyClient.js:1098
|
||||||
#: ../js/ui/components/telepathyClient.js:1155
|
#: ../js/ui/components/telepathyClient.js:1177
|
||||||
#: ../js/ui/components/telepathyClient.js:1218
|
#: ../js/ui/components/telepathyClient.js:1240
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "أرفُض"
|
msgstr "أرفُض"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1077
|
#: ../js/ui/components/telepathyClient.js:1099
|
||||||
#: ../js/ui/components/telepathyClient.js:1156
|
#: ../js/ui/components/telepathyClient.js:1178
|
||||||
#: ../js/ui/components/telepathyClient.js:1219
|
#: ../js/ui/components/telepathyClient.js:1241
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "أقْبَل"
|
msgstr "أقْبَل"
|
||||||
|
|
||||||
#. 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:1107
|
#: ../js/ui/components/telepathyClient.js:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "مكالمة فيديو من %s"
|
msgstr "مكالمة فيديو من %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:1110
|
#: ../js/ui/components/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "مكالمة من %s"
|
msgstr "مكالمة من %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1115
|
#: ../js/ui/components/telepathyClient.js:1137
|
||||||
#: ../js/ui/status/bluetooth.js:346
|
#: ../js/ui/status/bluetooth.js:346
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "ارفض"
|
msgstr "ارفض"
|
||||||
|
|
||||||
#. 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:1117
|
#: ../js/ui/components/telepathyClient.js:1139
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "أجب"
|
msgstr "أجب"
|
||||||
|
|
||||||
@ -688,108 +720,108 @@ msgstr "أجب"
|
|||||||
#. * 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:1149
|
#: ../js/ui/components/telepathyClient.js:1171
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s يرسل لك %s"
|
msgstr "%s يرسل لك %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/components/telepathyClient.js:1184
|
#: ../js/ui/components/telepathyClient.js:1206
|
||||||
#, c-format
|
#, c-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 الإذن ليعرف عندما تكون متصلا"
|
msgstr "يريد %s الإذن ليعرف عندما تكون متصلا"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1276
|
#: ../js/ui/components/telepathyClient.js:1298
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "خطأ في الشبكة"
|
msgstr "خطأ في الشبكة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1278
|
#: ../js/ui/components/telepathyClient.js:1300
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "فشل الاستيثاق"
|
msgstr "فشل الاستيثاق"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1280
|
#: ../js/ui/components/telepathyClient.js:1302
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "فشل التعمية"
|
msgstr "فشل التعمية"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1282
|
#: ../js/ui/components/telepathyClient.js:1304
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "الشهادة غير متوفرة"
|
msgstr "الشهادة غير متوفرة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1284
|
#: ../js/ui/components/telepathyClient.js:1306
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "الشهادة غير موثوقة"
|
msgstr "الشهادة غير موثوقة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1286
|
#: ../js/ui/components/telepathyClient.js:1308
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "الشهادة منتهية الصلاحية"
|
msgstr "الشهادة منتهية الصلاحية"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1288
|
#: ../js/ui/components/telepathyClient.js:1310
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "الشهادة غير مفعلة"
|
msgstr "الشهادة غير مفعلة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1290
|
#: ../js/ui/components/telepathyClient.js:1312
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "الشهادة غير متوافقة مع اسم المستضيف"
|
msgstr "الشهادة غير متوافقة مع اسم المستضيف"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1292
|
#: ../js/ui/components/telepathyClient.js:1314
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "بصمة الشهادة غير متطابقة"
|
msgstr "بصمة الشهادة غير متطابقة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1294
|
#: ../js/ui/components/telepathyClient.js:1316
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "الشهادة موقعة ذاتيا"
|
msgstr "الشهادة موقعة ذاتيا"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1296
|
#: ../js/ui/components/telepathyClient.js:1318
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "الحالة مضبوطة إلى غير متصل"
|
msgstr "الحالة مضبوطة إلى غير متصل"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1298
|
#: ../js/ui/components/telepathyClient.js:1320
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "التعمية غير متاحة"
|
msgstr "التعمية غير متاحة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1300
|
#: ../js/ui/components/telepathyClient.js:1322
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "الشهادة غير صالحة"
|
msgstr "الشهادة غير صالحة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1302
|
#: ../js/ui/components/telepathyClient.js:1324
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "رُفض الاتصال"
|
msgstr "رُفض الاتصال"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1304
|
#: ../js/ui/components/telepathyClient.js:1326
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "تعذر إنشاء الاتصال"
|
msgstr "تعذر إنشاء الاتصال"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1306
|
#: ../js/ui/components/telepathyClient.js:1328
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "فُقد الاتصال"
|
msgstr "فُقد الاتصال"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1308
|
#: ../js/ui/components/telepathyClient.js:1330
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "هذا الحساب متصل بالخادوم بالفعل"
|
msgstr "هذا الحساب متصل بالخادوم بالفعل"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1310
|
#: ../js/ui/components/telepathyClient.js:1332
|
||||||
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 "تم تبديل الاتصال باتصال جديد باستخدام نفس المورد"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1312
|
#: ../js/ui/components/telepathyClient.js:1334
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "الحساب موجود بالفعل في الخادوم"
|
msgstr "الحساب موجود بالفعل في الخادوم"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1314
|
#: ../js/ui/components/telepathyClient.js:1336
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "الخادوم مشغول للغاية حاليًا ولا يستطيع التعامل مع الاتصال"
|
msgstr "الخادوم مشغول للغاية حاليًا ولا يستطيع التعامل مع الاتصال"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1316
|
#: ../js/ui/components/telepathyClient.js:1338
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "نُقِضت الشهادة"
|
msgstr "نُقِضت الشهادة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1318
|
#: ../js/ui/components/telepathyClient.js:1340
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "تستخدم الشهادة خوارزمية تعمية غير آمنة أو ضعيفة"
|
msgstr "تستخدم الشهادة خوارزمية تعمية غير آمنة أو ضعيفة"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1320
|
#: ../js/ui/components/telepathyClient.js:1342
|
||||||
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"
|
||||||
@ -797,26 +829,26 @@ msgstr ""
|
|||||||
"طول شهادة الخادم أو طول سلسلة الشهادات إلى الخادم تجاوز الحد الذي تفرضه "
|
"طول شهادة الخادم أو طول سلسلة الشهادات إلى الخادم تجاوز الحد الذي تفرضه "
|
||||||
"مكتبة التعمية"
|
"مكتبة التعمية"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1322
|
#: ../js/ui/components/telepathyClient.js:1344
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "خطأ داخلي"
|
msgstr "خطأ داخلي"
|
||||||
|
|
||||||
#. 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:1332
|
#: ../js/ui/components/telepathyClient.js:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "فشل الاتصال ب %s"
|
msgstr "فشل الاتصال ب %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1341
|
#: ../js/ui/components/telepathyClient.js:1363
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "أعد الاتصال"
|
msgstr "أعد الاتصال"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1342
|
#: ../js/ui/components/telepathyClient.js:1364
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "عدّل الحساب"
|
msgstr "عدّل الحساب"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1387
|
#: ../js/ui/components/telepathyClient.js:1409
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "السبب غير معروف"
|
msgstr "السبب غير معروف"
|
||||||
|
|
||||||
@ -952,84 +984,76 @@ msgstr "ثبت"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "هل تريد تنزيل وتثبيت '%s' من extensions.gnome.org؟"
|
msgstr "هل تريد تنزيل وتثبيت '%s' من extensions.gnome.org؟"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "لوحة النظام"
|
msgstr "لوحة النظام"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:545 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "لوحة المفاتيح"
|
msgstr "لوحة المفاتيح"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:694
|
#: ../js/ui/lookingGlass.js:691
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "لا امتدادات مثبّتة"
|
msgstr "لا امتدادات مثبّتة"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:748
|
#: ../js/ui/lookingGlass.js:745
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "لم يصدر %s أي خطأ."
|
msgstr "لم يصدر %s أي خطأ."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:754
|
#: ../js/ui/lookingGlass.js:751
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "أخفِ الأخطاء"
|
msgstr "أخفِ الأخطاء"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
|
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "اظهر الأخطاء"
|
msgstr "اظهر الأخطاء"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:767
|
#: ../js/ui/lookingGlass.js:764
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "مفعّل"
|
msgstr "مفعّل"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
|
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "معطّل"
|
msgstr "معطّل"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:772
|
#: ../js/ui/lookingGlass.js:769
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "خطأ"
|
msgstr "خطأ"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:774
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "قديم"
|
msgstr "قديم"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:776
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "ينزّل"
|
msgstr "ينزّل"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:800
|
#: ../js/ui/lookingGlass.js:797
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "اعرض المصدر"
|
msgstr "اعرض المصدر"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:809
|
#: ../js/ui/lookingGlass.js:806
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "صفحة الوب"
|
msgstr "صفحة الوب"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1232
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "افتح"
|
msgstr "افتح"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1239
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "أزِل"
|
msgstr "أزِل"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1249
|
#: ../js/ui/messageTray.js:2088
|
||||||
msgid "Unmute"
|
|
||||||
msgstr "أطلِق الصوت"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1249
|
|
||||||
msgid "Mute"
|
|
||||||
msgstr "أصمِت"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2036
|
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "لوحة الرسائل"
|
msgstr "لوحة الرسائل"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2483
|
#: ../js/ui/messageTray.js:2551
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "معلومات النظام"
|
msgstr "معلومات النظام"
|
||||||
|
|
||||||
@ -1038,11 +1062,11 @@ msgctxt "program"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "غير معروف"
|
msgstr "غير معروف"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:83
|
#: ../js/ui/overview.js:82
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "تراجع"
|
msgstr "تراجع"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:128
|
#: ../js/ui/overview.js:127
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "نظرة عامة"
|
msgstr "نظرة عامة"
|
||||||
|
|
||||||
@ -1050,13 +1074,13 @@ msgstr "نظرة عامة"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:201
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "اكتب نصا للبحث عنه..."
|
msgstr "اكتب نصا للبحث عنه..."
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:223
|
#: ../js/ui/overview.js:222
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "الشريط"
|
msgstr "الشريط"
|
||||||
|
|
||||||
@ -1074,25 +1098,12 @@ msgstr "الأنشطة"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "الشريط العلوي"
|
msgstr "الشريط العلوي"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:115
|
|
||||||
#, c-format
|
|
||||||
msgid "Failed to unmount '%s'"
|
|
||||||
msgstr "فشل فصْل '%s'"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:118
|
|
||||||
msgid "Retry"
|
|
||||||
msgstr "أعد المحاولة"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:349
|
|
||||||
msgid "PLACES & DEVICES"
|
|
||||||
msgstr "الأماكن والأجهزة"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:728
|
#: ../js/ui/popupMenu.js:731
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -1102,11 +1113,11 @@ msgstr "من فضلك أدخل أمرًا:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A، %d %B"
|
msgstr "%A، %d %B"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
@ -1117,7 +1128,7 @@ msgstr[3] "%d رسائل جديدة"
|
|||||||
msgstr[4] "%d رسالة جديدة"
|
msgstr[4] "%d رسالة جديدة"
|
||||||
msgstr[5] "%d رسالة جديدة"
|
msgstr[5] "%d رسالة جديدة"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -1128,11 +1139,11 @@ msgstr[3] "%d تنبيهات جديدة"
|
|||||||
msgstr[4] "%d تنبيها جديدا"
|
msgstr[4] "%d تنبيها جديدا"
|
||||||
msgstr[5] "%d تنبيه جديد"
|
msgstr[5] "%d تنبيه جديد"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:277
|
#: ../js/ui/searchDisplay.js:275
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "يبحث..."
|
msgstr "يبحث..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:328
|
#: ../js/ui/searchDisplay.js:323
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "لا نتائج."
|
msgstr "لا نتائج."
|
||||||
|
|
||||||
@ -1144,11 +1155,11 @@ msgstr "انسخ"
|
|||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "ألصق"
|
msgstr "ألصق"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:96
|
#: ../js/ui/shellEntry.js:102
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "أظهر النص"
|
msgstr "أظهر النص"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:98
|
#: ../js/ui/shellEntry.js:104
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "أخفِ النص"
|
msgstr "أخفِ النص"
|
||||||
|
|
||||||
@ -1160,7 +1171,7 @@ msgstr "كلمة السر"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "تذكر كلمة السر"
|
msgstr "تذكر كلمة السر"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:137
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "فك القفل"
|
msgstr "فك القفل"
|
||||||
|
|
||||||
@ -1336,11 +1347,11 @@ msgstr "من فضلك أدخل الرقم المذكور على الجهاز."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "حسنا"
|
msgstr "حسنا"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "أظهر تخطيط لوحة المفاتيح"
|
msgstr "أظهر تخطيط لوحة المفاتيح"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "إعدادات الإقليم واللغة"
|
msgstr "إعدادات الإقليم واللغة"
|
||||||
|
|
||||||
@ -1587,67 +1598,67 @@ msgstr "شدة الصوت"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "ميكروفون"
|
msgstr "ميكروفون"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:144
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "لِج كمستخدم آخر"
|
msgstr "لِج كمستخدم آخر"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "متفرّغ"
|
msgstr "متفرّغ"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "مشغول"
|
msgstr "مشغول"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "خفي"
|
msgstr "خفي"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "غائب"
|
msgstr "غائب"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "ساكن"
|
msgstr "ساكن"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "مشغول"
|
msgstr "مشغول"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:756
|
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "بدّل المستخدم"
|
msgstr "بدّل المستخدم"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "Switch Session"
|
msgid "Switch Session"
|
||||||
msgstr "بدّل الجلسة"
|
msgstr "بدّل الجلسة"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:740
|
#: ../js/ui/userMenu.js:743
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "التنبيهات"
|
msgstr "التنبيهات"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:748
|
#: ../js/ui/userMenu.js:751
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "إعدادات النظام"
|
msgstr "إعدادات النظام"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:761
|
#: ../js/ui/userMenu.js:764
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "اخرج"
|
msgstr "اخرج"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:766
|
#: ../js/ui/userMenu.js:769
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "أوصِد"
|
msgstr "أوصِد"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:781
|
#: ../js/ui/userMenu.js:784
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "ثبّت التحديثات وأعد التشغيل"
|
msgstr "ثبّت التحديثات وأعد التشغيل"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:799
|
#: ../js/ui/userMenu.js:802
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "ستُجعل حالة اتصالك ”مشغول“"
|
msgstr "ستُجعل حالة اتصالك ”مشغول“"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:800
|
#: ../js/ui/userMenu.js:803
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1655,19 +1666,19 @@ msgstr ""
|
|||||||
"التنبيهات معطلة الآن، بما فيها رسائل المحادثة. حالة اتصالك تغيرت حتى يعلم "
|
"التنبيهات معطلة الآن، بما فيها رسائل المحادثة. حالة اتصالك تغيرت حتى يعلم "
|
||||||
"الآخرون أنك قد لا ترى رسائلهم."
|
"الآخرون أنك قد لا ترى رسائلهم."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:86
|
#: ../js/ui/viewSelector.js:85
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "النوافذ"
|
msgstr "النوافذ"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:90
|
#: ../js/ui/viewSelector.js:89
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "التطبيقات"
|
msgstr "التطبيقات"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:93
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "ابحث"
|
msgstr "ابحث"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:119
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1676,12 +1687,12 @@ msgstr ""
|
|||||||
"عذرًا, لا حكمة لك اليوم:\n"
|
"عذرًا, لا حكمة لك اليوم:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:127
|
#: ../js/ui/wanda.js:123
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "يقول الحكيم %s"
|
msgstr "يقول الحكيم %s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:164
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1765,27 +1776,20 @@ msgstr "المبدئي"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "أغلق المستخدم مربع الاستيثاق الحِواري"
|
msgstr "أغلق المستخدم مربع الاستيثاق الحِواري"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#~ msgid "Failed to unmount '%s'"
|
||||||
#. * nautilus
|
#~ msgstr "فشل فصْل '%s'"
|
||||||
#: ../src/shell-util.c:94
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "المنزل"
|
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#~ msgid "Retry"
|
||||||
#. * nautilus
|
#~ msgstr "أعد المحاولة"
|
||||||
#: ../src/shell-util.c:104
|
|
||||||
msgid "File System"
|
|
||||||
msgstr "نظام الملفات"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
#~ msgid "PLACES & DEVICES"
|
||||||
#. * method, and the second string is a path. For
|
#~ msgstr "الأماكن والأجهزة"
|
||||||
#. * example, "Trash: some-directory". It means that the
|
|
||||||
#. * directory called "some-directory" is in the trash.
|
#~ msgid "Home"
|
||||||
#.
|
#~ msgstr "المنزل"
|
||||||
#: ../src/shell-util.c:300
|
|
||||||
#, c-format
|
#~ msgid "%1$s: %2$s"
|
||||||
msgid "%1$s: %2$s"
|
#~ msgstr "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
|
||||||
|
|
||||||
#~ msgid "Connect to..."
|
#~ msgid "Connect to..."
|
||||||
#~ msgstr "اتّصل ب..."
|
#~ msgstr "اتّصل ب..."
|
||||||
|
151
po/as.po
151
po/as.po
@ -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."
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
|
||||||
"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-09-18 04:20+0000\n"
|
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-18 14:54+0530\n"
|
"PO-Revision-Date: 2012-09-25 12:18+0530\n"
|
||||||
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
||||||
"Language-Team: as_IN <kde-i18n-doc@kde.org>\n"
|
"Language-Team: as_IN <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@ -20,6 +20,22 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Lokalize 1.0\n"
|
"X-Generator: Lokalize 1.0\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "স্ক্ৰিনশ্বটসমূহ"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "এটা স্ক্ৰিনশ্বট ৰেকৰ্ড কৰক"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "চিস্টেম"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "বাৰ্তা ট্ৰে দেখুৱাওক"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME শ্বেল"
|
msgstr "GNOME শ্বেল"
|
||||||
@ -175,17 +191,6 @@ msgstr "screencast এনক'ড কৰিবলে ব্যৱহাৰ কৰ
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
#| msgid ""
|
|
||||||
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
|
||||||
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
|
||||||
#| "pad where the recorded video is recorded. It will normally have a "
|
|
||||||
#| "unconnected source pad; output from that pad will be written into the "
|
|
||||||
#| "output file. However the pipeline can also take care of its own output - "
|
|
||||||
#| "this might be used to send the output to an icecast server via shout2send "
|
|
||||||
#| "or similar. When unset or set to an empty value, the default pipeline "
|
|
||||||
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
|
|
||||||
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
|
|
||||||
#| "placeholder for a guess at the optimal thread count on the system."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -205,10 +210,9 @@ msgstr ""
|
|||||||
"আউটপুটৰ যত্ন লব পাৰে - ইয়াৰ হওতো আউটপুটক shout2send অথবা সমসাময়িকৰে এটা icecast "
|
"আউটপুটৰ যত্ন লব পাৰে - ইয়াৰ হওতো আউটপুটক shout2send অথবা সমসাময়িকৰে এটা icecast "
|
||||||
"চাৰ্ভাৰত পঠাবলে ব্যৱহাৰ হব পাৰে। যেতিয়া এটা ৰিক্ত মানলে অসংহিত বা সংহিত, "
|
"চাৰ্ভাৰত পঠাবলে ব্যৱহাৰ হব পাৰে। যেতিয়া এটা ৰিক্ত মানলে অসংহিত বা সংহিত, "
|
||||||
"অবিকল্পিত পাইপলাইন ব্যৱহাৰ কৰা হব। এইটো বৰ্তমানত 'vp8enc min_quantizer=13 "
|
"অবিকল্পিত পাইপলাইন ব্যৱহাৰ কৰা হব। এইটো বৰ্তমানত 'vp8enc min_quantizer=13 "
|
||||||
"max_quantizer=13 "
|
"max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' "
|
||||||
"cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' আৰু VP8 কডেক ব্যৱহাৰ কৰি "
|
"আৰু VP8 কডেক ব্যৱহাৰ কৰি WEBM ত ৰেকৰ্ড কৰে। %T ক চিস্টেমত অনুকূলিত থ্ৰেড কাওন্টত "
|
||||||
"WEBM ত ৰেকৰ্ড কৰে। %T -ক "
|
"এটা অনুমানৰ প্লেইচহল্ডাৰ হিচাপে ব্যৱহাৰ কৰা হয়।"
|
||||||
"চিস্টেমত অনুকূলিত থ্ৰেড কাওন্টত এটা অনুমানৰ প্লেইচহল্ডাৰ হিচাপে ব্যৱহাৰ কৰা হয়।"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
@ -237,7 +241,7 @@ msgstr "প্ৰসাৰন"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "উপৰত দিয়া কম্বোবাকচ ব্যৱহাৰ কৰি সংৰূপণ কৰিবলে এটা সম্প্ৰসাৰন বাছক।"
|
msgstr "উপৰত দিয়া কম্বোবাকচ ব্যৱহাৰ কৰি সংৰূপণ কৰিবলে এটা সম্প্ৰসাৰন বাছক।"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:527
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "অধিবেশন..."
|
msgstr "অধিবেশন..."
|
||||||
|
|
||||||
@ -256,7 +260,7 @@ msgstr "তালিকাভুক্ত নহয়?"
|
|||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:137
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "বাতিল কৰক"
|
msgstr "বাতিল কৰক"
|
||||||
|
|
||||||
@ -269,27 +273,37 @@ msgstr "ছাইন ইন কৰক"
|
|||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "লগিন উইন্ডো"
|
msgstr "লগিন উইন্ডো"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:772
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
#| msgid "Power Off"
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "শক্তি"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||||
|
#: ../js/ui/userMenu.js:778
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "বাতিল কৰক"
|
msgstr "বাতিল কৰক"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "পুনৰাম্ভ কৰক"
|
msgstr "পুনৰাম্ভ কৰক"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||||
#: ../js/ui/userMenu.js:771
|
#: ../js/ui/userMenu.js:777
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "পাৱাৰ অফ"
|
msgstr "বন্ধ কৰক"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "প্ৰমাণীকৰণ ত্ৰুটি"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(অথবা আঙুলি স্বাইপ কৰক)"
|
msgstr "(অথবা আঙুলি স্বাইপ কৰক)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(উদাহৰণ, ব্যৱহাৰকাৰী অথবা %s)"
|
msgstr "(উদাহৰণ, ব্যৱহাৰকাৰী অথবা %s)"
|
||||||
@ -717,7 +731,7 @@ msgstr "%s ৰ পৰা ভিডিঅ' কল"
|
|||||||
#: ../js/ui/components/telepathyClient.js:1132
|
#: ../js/ui/components/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "%s - পৰা কল"
|
msgstr "%s ৰ পৰা কল"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1137
|
#: ../js/ui/components/telepathyClient.js:1137
|
||||||
#: ../js/ui/status/bluetooth.js:346
|
#: ../js/ui/status/bluetooth.js:346
|
||||||
@ -727,7 +741,7 @@ msgstr "নাকচ কৰক"
|
|||||||
#. 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:1139
|
#: ../js/ui/components/telepathyClient.js:1139
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "উত্তৰ"
|
msgstr "উত্তৰ দিয়ক"
|
||||||
|
|
||||||
#. To translators: The first parameter is
|
#. To translators: The first parameter is
|
||||||
#. * the contact's alias and the second one is the
|
#. * the contact's alias and the second one is the
|
||||||
@ -915,7 +929,7 @@ msgstr[1] "আপুনি স্বচালিতভাৱে %d ছেকে
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74
|
#: ../js/ui/endSessionDialog.js:74
|
||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "চিস্টেমৰ পৰা লগ আউট হৈ আছে।"
|
msgstr "চিস্টেমৰ পৰা লগ আউট কৰা হৈছে।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
@ -925,22 +939,22 @@ msgstr "লগ আউট কৰক"
|
|||||||
#: ../js/ui/endSessionDialog.js:81
|
#: ../js/ui/endSessionDialog.js:81
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "পাৱাৰ অফ"
|
msgstr "বন্ধ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:82
|
#: ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Click Power Off to quit these applications and power off the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr "এই এপ্লিকেচনসমূহক প্ৰস্থান কৰি চিস্টেম পাৱাৰ অফ কৰিবলে পাৱাৰ অফ ক্লিক কৰক।"
|
msgstr "এই এপ্লিকেচনসমূহক প্ৰস্থান কৰি চিস্টেম বন্ধ কৰিবলে বন্ধ কৰক ক্লিক কৰক।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:84
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will power off automatically in %d second."
|
msgid "The system will power off automatically in %d second."
|
||||||
msgid_plural "The system will power off automatically in %d seconds."
|
msgid_plural "The system will power off automatically in %d seconds."
|
||||||
msgstr[0] "চিস্টেম %d ছেকেণ্ড পিছত স্বচালিতভাৱে পাৱাৰ অফ হব। "
|
msgstr[0] "চিস্টেম %d ছেকেণ্ড পিছত স্বচালিতভাৱে বন্ধ কৰক হব। "
|
||||||
msgstr[1] "চিস্টেম %d ছেকেণ্ডৰ পিছত স্বচালিতভাৱে বন্ধ হব। "
|
msgstr[1] "চিস্টেম %d ছেকেণ্ডৰ পিছত স্বচালিতভাৱে বন্ধ হব। "
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:88
|
||||||
msgid "Powering off the system."
|
msgid "Powering off the system."
|
||||||
msgstr "চিস্টেম পাৱাৰ অফ কৰা হৈ আছে।"
|
msgstr "চিস্টেম বন্ধ কৰা হৈছে।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
@ -950,7 +964,7 @@ msgstr "পুনৰাম্ভ কৰক"
|
|||||||
#: ../js/ui/endSessionDialog.js:92
|
#: ../js/ui/endSessionDialog.js:92
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "পাৱাৰ অফ"
|
msgstr "বন্ধ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:98
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
@ -970,7 +984,7 @@ msgstr[1] "চিস্টেম %d ছেকেণ্ডত স্বচাল
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:105
|
#: ../js/ui/endSessionDialog.js:105
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "চিস্টেম পুনৰাম্ভ কৰা হৈ আছে।"
|
msgstr "চিস্টেম পুনৰাম্ভ কৰা হৈছে।"
|
||||||
|
|
||||||
#: ../js/ui/extensionDownloader.js:199
|
#: ../js/ui/extensionDownloader.js:199
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
@ -985,7 +999,7 @@ msgstr "extensions.gnome.org ৰ পৰা '%s' ক ডাউনল'ড আৰ
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "ট্ৰে"
|
msgstr "ট্ৰে"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "কিবৰ্ড"
|
msgstr "কিবৰ্ড"
|
||||||
@ -1028,7 +1042,7 @@ msgstr "পুৰনি"
|
|||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:773
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "ডাউনল'ড কৰা হৈ আছে"
|
msgstr "ডাউনল'ড কৰা হৈছে"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:797
|
#: ../js/ui/lookingGlass.js:797
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
@ -1046,11 +1060,11 @@ msgstr "খোলক"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "আতৰাওক"
|
msgstr "আতৰাওক"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2041
|
#: ../js/ui/messageTray.js:2055
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "বাৰ্তা ট্ৰে"
|
msgstr "বাৰ্তা ট্ৰে"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2483
|
#: ../js/ui/messageTray.js:2511
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "চিস্টেম তথ্য"
|
msgstr "চিস্টেম তথ্য"
|
||||||
|
|
||||||
@ -1110,18 +1124,18 @@ msgstr "অনুগ্ৰহ কৰি এটা কমান্ড সুম
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %B %d"
|
msgstr "%A, %B %d"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
msgstr[0] "%d নতুন বাৰ্তা"
|
msgstr[0] "%d নতুন বাৰ্তা"
|
||||||
msgstr[1] "%d নতুন বাৰ্তাসমূহ"
|
msgstr[1] "%d নতুন বাৰ্তাসমূহ"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -1160,7 +1174,7 @@ msgstr "পাছৱাৰ্ড"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "পাছৱাৰ্ড মনত ৰাখক"
|
msgstr "পাছৱাৰ্ড মনত ৰাখক"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:140
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "আনলক কৰক"
|
msgstr "আনলক কৰক"
|
||||||
|
|
||||||
@ -1246,12 +1260,12 @@ msgstr "সংযোগ"
|
|||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:207 ../js/ui/status/network.js:458
|
#: ../js/ui/status/bluetooth.js:207 ../js/ui/status/network.js:458
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "বিচ্ছিনিত কৰা হৈ আছে..."
|
msgstr "বিচ্ছিনিত কৰা হৈছে..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:220 ../js/ui/status/network.js:464
|
#: ../js/ui/status/bluetooth.js:220 ../js/ui/status/network.js:464
|
||||||
#: ../js/ui/status/network.js:934
|
#: ../js/ui/status/network.js:934
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "সংযোগ কৰা হৈ আছে..."
|
msgstr "সংযোগ কৰা হৈছে..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:238
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
@ -1336,11 +1350,11 @@ msgstr "অনুগ্ৰহ কৰি ডিভাইচত উল্লেখ
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "ঠিক আছে"
|
msgstr "ঠিক আছে"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "কিবৰ্ড বিন্যাস দেখুৱাওক"
|
msgstr "কিবৰ্ড বিন্যাস দেখুৱাওক"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "অঞ্চল আৰু ভাষা সংহতিসমূহ"
|
msgstr "অঞ্চল আৰু ভাষা সংহতিসমূহ"
|
||||||
|
|
||||||
@ -1477,7 +1491,7 @@ msgstr "শক্তি সংহতিসমূহ"
|
|||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:94
|
#: ../js/ui/status/power.js:94
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "অনুমান কৰা হৈ আছে..."
|
msgstr "অনুমান কৰা হৈছে..."
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:101
|
#: ../js/ui/status/power.js:101
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -1571,67 +1585,67 @@ msgstr "ভলিউম"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "মাইক্ৰোফোন"
|
msgstr "মাইক্ৰোফোন"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:147
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "অন্য ব্যৱহাৰকাৰী হিচাপে লগিন কৰক"
|
msgstr "অন্য ব্যৱহাৰকাৰী হিচাপে লগিন কৰক"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "উপলব্ধ"
|
msgstr "উপলব্ধ"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "ব্যস্থ"
|
msgstr "ব্যস্থ"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "অদৃশ্য"
|
msgstr "অদৃশ্য"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "আতৰত"
|
msgstr "আতৰত"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "অলস"
|
msgstr "অলস"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "উপলব্ধ নাই"
|
msgstr "উপলব্ধ নাই"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
|
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "ব্যৱহাৰকাৰী পৰিবৰ্তন কৰক"
|
msgstr "ব্যৱহাৰকাৰী পৰিবৰ্তন কৰক"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "Switch Session"
|
msgid "Switch Session"
|
||||||
msgstr "অধিবেশন পৰিবৰ্তন কৰক"
|
msgstr "অধিবেশন পৰিবৰ্তন কৰক"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:737
|
#: ../js/ui/userMenu.js:743
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "অধিসূচনাসমূহ"
|
msgstr "অধিসূচনাসমূহ"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:745
|
#: ../js/ui/userMenu.js:751
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "চিস্টেম সংহতিসমূহ"
|
msgstr "চিস্টেম সংহতিসমূহ"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:758
|
#: ../js/ui/userMenu.js:764
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "লগ আউট কৰক"
|
msgstr "লগ আউট কৰক"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:763
|
#: ../js/ui/userMenu.js:769
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "লক কৰক"
|
msgstr "লক কৰক"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:778
|
#: ../js/ui/userMenu.js:784
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "আপডেইটসমূহ ইনস্টল কৰক & পুনাৰম্ভ কৰক"
|
msgstr "আপডেইটসমূহ ইনস্টল কৰক আৰু পুনাৰম্ভ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:796
|
#: ../js/ui/userMenu.js:802
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "আপোনাৰ চেট অৱস্থা ব্যস্থলে সংহতি কৰা হব"
|
msgstr "আপোনাৰ চেট অৱস্থা ব্যস্থলে সংহতি কৰা হব"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:803
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1754,9 +1768,6 @@ msgstr "প্ৰমাণীকৰণ ডাইলগ ব্যৱহাৰক
|
|||||||
#~ msgid "Home"
|
#~ msgid "Home"
|
||||||
#~ msgstr "ঘৰ"
|
#~ msgstr "ঘৰ"
|
||||||
|
|
||||||
#~ msgid "File System"
|
|
||||||
#~ msgstr "ফাইল চিস্টেম"
|
|
||||||
|
|
||||||
#~ msgid "%1$s: %2$s"
|
#~ msgid "%1$s: %2$s"
|
||||||
#~ msgstr "%1$s: %2$s"
|
#~ msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
@ -1833,7 +1844,7 @@ msgstr "প্ৰমাণীকৰণ ডাইলগ ব্যৱহাৰক
|
|||||||
#~ msgstr "লুকাই থকা"
|
#~ msgstr "লুকাই থকা"
|
||||||
|
|
||||||
#~ msgid "Power Off..."
|
#~ msgid "Power Off..."
|
||||||
#~ msgstr "পাৱাৰ অফ"
|
#~ msgstr "বন্ধ কৰক"
|
||||||
|
|
||||||
#~ msgid "Online Accounts"
|
#~ msgid "Online Accounts"
|
||||||
#~ msgstr "অনলাইন একাওন্টসমূহ"
|
#~ msgstr "অনলাইন একাওন্টসমূহ"
|
||||||
|
390
po/be.po
390
po/be.po
@ -5,8 +5,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: 2012-09-06 15:33+0000\n"
|
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-07 18:58+0300\n"
|
"PO-Revision-Date: 2012-10-16 12:05+0300\n"
|
||||||
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
|
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
|
||||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
||||||
"Language: be\n"
|
"Language: be\n"
|
||||||
@ -18,6 +18,30 @@ msgstr ""
|
|||||||
"X-Generator: Virtaal 0.7.0\n"
|
"X-Generator: Virtaal 0.7.0\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "Здымка экрана"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "Запіс скрынкасту"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Сістэма"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "Паказаць абшар апавяшчэнняў"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||||
|
msgid "Show all applications"
|
||||||
|
msgstr "Паказаць усе праграмы"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||||
|
msgid "Open the application menu"
|
||||||
|
msgstr "Адкрыць праграмнае меню"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "Абалонка GNOME"
|
msgstr "Абалонка GNOME"
|
||||||
@ -95,18 +119,14 @@ msgstr ""
|
|||||||
"праграм."
|
"праграм."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
msgid "disabled OpenSearch providers"
|
|
||||||
msgstr "выключаныя правайдары OpenSearch"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr "Журнал загаднага дыялогу (Alt-F2)"
|
msgstr "Журнал загаднага дыялогу (Alt-F2)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "Журнал дыялогу Looking Glass"
|
msgstr "Журнал дыялогу Looking Glass"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last IM presence explicitly set by the user. "
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
"The value here is from the TpConnectionPresenceType enumeration."
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
@ -115,7 +135,7 @@ msgstr ""
|
|||||||
"камунікатара, настаўленага асабіста карыстальнікам. Гэта значэнне - адно з "
|
"камунікатара, настаўленага асабіста карыстальнікам. Гэта значэнне - адно з "
|
||||||
"пераліку TpConnectionPresenceType."
|
"пераліку TpConnectionPresenceType."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last session presence status for the user. The "
|
"Internally used to store the last session presence status for the user. The "
|
||||||
"value here is from the GsmPresenceStatus enumeration."
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
@ -123,51 +143,60 @@ msgstr ""
|
|||||||
"Выкарыстоўваецца ўнутры сістэмы для захавання апошняга стану прысутнасці "
|
"Выкарыстоўваецца ўнутры сістэмы для захавання апошняга стану прысутнасці "
|
||||||
"камунікатара карыстальніка. Гэта значэнне - з пераліку GsmPresenceStatus."
|
"камунікатара карыстальніка. Гэта значэнне - з пераліку GsmPresenceStatus."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Паказваць тыдзень у календары"
|
msgstr "Паказваць тыдзень у календары"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "Калі ўключана, паказваць тыдзень у календары ў ISO-фармаце."
|
msgstr "Калі ўключана, паказваць тыдзень у календары ў ISO-фармаце."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню"
|
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню."
|
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
|
msgstr "Клавіятурны скарот для рэжыму \"Паказаць праграмы\""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
|
msgid ""
|
||||||
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
|
msgstr "Клавіятурны скарот для рэжыму \"Паказаць праграмы\" у Аглядзе Заняткаў."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "Keybinding to toggle the visibility of the message tray"
|
msgid "Keybinding to toggle the visibility of the message tray"
|
||||||
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў"
|
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to toggle the visibility of the message tray."
|
msgid "Keybinding to toggle the visibility of the message tray."
|
||||||
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў."
|
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to toggle the screen recorder"
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
msgstr "Клавіятурны скарот для ўключэння запісу экрана"
|
msgstr "Клавіятурны скарот для ўключэння запісу экрана"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
msgstr "Клавіятурны скарот для запуску/спынення ўбудаванага запісу экрана."
|
msgstr "Клавіятурны скарот для запуску/спынення ўбудаванага запісу экрана."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Ужываная клавіятура"
|
msgstr "Ужываная клавіятура"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "Від ужыванай клавіятуры."
|
msgstr "Від ужыванай клавіятуры."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Частата змены кадраў для запісу скрынкасту."
|
msgstr "Частата змены кадраў для запісу скрынкасту."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -175,11 +204,11 @@ msgstr ""
|
|||||||
"Частата змены кадраў выніковага скрынкасту, запісанага пры дапамозе абалонкі "
|
"Частата змены кадраў выніковага скрынкасту, запісанага пры дапамозе абалонкі "
|
||||||
"GNOME (кадраў на секунду)."
|
"GNOME (кадраў на секунду)."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "Канвеер gstreamer для кадавання скрынкастаў"
|
msgstr "Канвеер gstreamer для кадавання скрынкастаў"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -189,9 +218,9 @@ msgid ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Настаўляе канвеер GStreamer для кадавання запісаў. Ён прытрымліваецца "
|
"Настаўляе канвеер GStreamer для кадавання запісаў. Ён прытрымліваецца "
|
||||||
"сінтаксіса gst-launch. Неабходна, каб з боку элемента канвеера, дзе "
|
"сінтаксіса gst-launch. Неабходна, каб з боку элемента канвеера, дзе "
|
||||||
@ -200,15 +229,16 @@ msgstr ""
|
|||||||
"канвеер таксама можа самастойна абслугоўваць свой вывад. Напрыклад, гэта "
|
"канвеер таксама можа самастойна абслугоўваць свой вывад. Напрыклад, гэта "
|
||||||
"можа спатрэбіцца для пасылкі вываду на icecast-сервер пры дапамозе "
|
"можа спатрэбіцца для пасылкі вываду на icecast-сервер пры дапамозе "
|
||||||
"shout2send ці пад. Калі не настаўлена ці настаўлена пустое значэнне, будзе "
|
"shout2send ці пад. Калі не настаўлена ці настаўлена пустое значэнне, будзе "
|
||||||
"ўжыты прадвызначаны канвеер. Цяпер выкарыстоўваецца \"vp8enc quality=8 "
|
"ўжыты прадвызначаны канвеер. Цяпер выкарыстоўваецца \"vp8enc "
|
||||||
"speed=6 threads=%T ! queue ! webmmux\" і запісвае ў WEBM з дапамогай кодэка "
|
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||||
"VP8. %T ўжываецца ў якасці замены аптымальнай для сістэмы колькасці ніцяў."
|
"queue ! webmmux\" і запісвае ў WEBM з дапамогай кодэка VP8. %T ўжываецца ў "
|
||||||
|
"якасці замены аптымальнай для сістэмы колькасці ніцяў."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Пашырэнне файла для захавання скрынкасту"
|
msgstr "Пашырэнне файла для захавання скрынкасту"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -233,11 +263,11 @@ msgstr ""
|
|||||||
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
|
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
|
||||||
"вышэй."
|
"вышэй."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:529
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Сеанс..."
|
msgstr "Сеанс..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:677
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Уваход"
|
msgstr "Уваход"
|
||||||
@ -245,47 +275,56 @@ msgstr "Уваход"
|
|||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:742
|
#: ../js/gdm/loginDialog.js:736
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Няма ў спісе?"
|
msgstr "Няма ў спісе?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:135
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Скасаваць"
|
msgstr "Скасаваць"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:894
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Увайсці"
|
msgstr "Увайсці"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1215
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Акно ўваходу"
|
msgstr "Акно ўваходу"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Праца сістэмы"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:775
|
#: ../js/ui/userMenu.js:775
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Прыпыніць камп'ютар"
|
msgstr "Прыпыніць камп'ютар"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Перазапусціць сістэму"
|
msgstr "Перазапусціць сістэму"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:774
|
#: ../js/ui/userMenu.js:774
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Выключыць камп'ютар"
|
msgstr "Выключыць камп'ютар"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "Памылка ідэнтыфікацыі"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(або правядзіце пальцам)"
|
msgstr "(або правядзіце пальцам)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(напр., карыстальнік ці %s)"
|
msgstr "(напр., карыстальнік ці %s)"
|
||||||
@ -322,7 +361,7 @@ msgstr "НАСТРОЙКІ"
|
|||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Новае акно"
|
msgstr "Новае акно"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Выдаліць са спіса ўпадабанага"
|
msgstr "Выдаліць са спіса ўпадабанага"
|
||||||
|
|
||||||
@ -486,16 +525,16 @@ msgstr "На гэтым тыдні"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "На наступным тыдні"
|
msgstr "На наступным тыдні"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:278
|
#: ../js/ui/components/autorunManager.js:297
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "Зменныя прыстасаванні"
|
msgstr "Зменныя прыстасаванні"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:571
|
#: ../js/ui/components/autorunManager.js:594
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Адкрыць у %s"
|
msgstr "Адкрыць у %s"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:597
|
#: ../js/ui/components/autorunManager.js:620
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Выняць"
|
msgstr "Выняць"
|
||||||
|
|
||||||
@ -643,38 +682,46 @@ msgstr "Запыт на падпіску"
|
|||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Памылка злучэння"
|
msgstr "Памылка злучэння"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Unmute"
|
||||||
|
msgstr "Вярнуць гук"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Mute"
|
||||||
|
msgstr "Абязгучыць"
|
||||||
|
|
||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/components/telepathyClient.js:934
|
#: ../js/ui/components/telepathyClient.js:948
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Адпраўлена ў <b>%X</b>, <b>%A</b>"
|
msgstr "Адпраўлена ў <b>%X</b>, <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/components/telepathyClient.js:940
|
#: ../js/ui/components/telepathyClient.js:954
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Адпраўлена ў <b>%A</b>, <b>%d %B</b>"
|
msgstr "Адпраўлена ў <b>%A</b>, <b>%d %B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/components/telepathyClient.js:945
|
#: ../js/ui/components/telepathyClient.js:959
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Адпраўлена ў <b>%A</b>, <b>%d %B</b>, %Y"
|
msgstr "Адпраўлена ў <b>%A</b>, <b>%d %B</b>, %Y"
|
||||||
|
|
||||||
#. 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:974
|
#: ../js/ui/components/telepathyClient.js:988
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s змяніў імя на %s"
|
msgstr "%s змяніў імя на %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:1074
|
#: ../js/ui/components/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Запрашэнне ў %s"
|
msgstr "Запрашэнне ў %s"
|
||||||
@ -682,42 +729,42 @@ msgstr "Запрашэнне ў %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:1082
|
#: ../js/ui/components/telepathyClient.js:1096
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "Удзельнік %s запрашае вас далучыцца да %s"
|
msgstr "Удзельнік %s запрашае вас далучыцца да %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1084
|
#: ../js/ui/components/telepathyClient.js:1098
|
||||||
#: ../js/ui/components/telepathyClient.js:1163
|
#: ../js/ui/components/telepathyClient.js:1177
|
||||||
#: ../js/ui/components/telepathyClient.js:1226
|
#: ../js/ui/components/telepathyClient.js:1240
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Адмовіцца"
|
msgstr "Адмовіцца"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1085
|
#: ../js/ui/components/telepathyClient.js:1099
|
||||||
#: ../js/ui/components/telepathyClient.js:1164
|
#: ../js/ui/components/telepathyClient.js:1178
|
||||||
#: ../js/ui/components/telepathyClient.js:1227
|
#: ../js/ui/components/telepathyClient.js:1241
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Прыняць"
|
msgstr "Прыняць"
|
||||||
|
|
||||||
#. 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:1115
|
#: ../js/ui/components/telepathyClient.js:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Відэазванок ад %s"
|
msgstr "Відэазванок ад %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:1118
|
#: ../js/ui/components/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Званок ад %s"
|
msgstr "Званок ад %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1123
|
#: ../js/ui/components/telepathyClient.js:1137
|
||||||
#: ../js/ui/status/bluetooth.js:346
|
#: ../js/ui/status/bluetooth.js:346
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Адмовіць"
|
msgstr "Адмовіць"
|
||||||
|
|
||||||
#. 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:1125
|
#: ../js/ui/components/telepathyClient.js:1139
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Адказаць"
|
msgstr "Адказаць"
|
||||||
|
|
||||||
@ -726,108 +773,108 @@ msgstr "Адказаць"
|
|||||||
#. * 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:1157
|
#: ../js/ui/components/telepathyClient.js:1171
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s пасылае вам %s"
|
msgstr "%s пасылае вам %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/components/telepathyClient.js:1192
|
#: ../js/ui/components/telepathyClient.js:1206
|
||||||
#, c-format
|
#, c-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 просіць дазволу на прагляд вашага сеткавага стану"
|
msgstr "%s просіць дазволу на прагляд вашага сеткавага стану"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1284
|
#: ../js/ui/components/telepathyClient.js:1298
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Сеткавая памылка"
|
msgstr "Сеткавая памылка"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1286
|
#: ../js/ui/components/telepathyClient.js:1300
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Няўдалая ідэнтыфікацыя"
|
msgstr "Няўдалая ідэнтыфікацыя"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1288
|
#: ../js/ui/components/telepathyClient.js:1302
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Памылка шыфравання"
|
msgstr "Памылка шыфравання"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1290
|
#: ../js/ui/components/telepathyClient.js:1304
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Сертыфікат не пададзены"
|
msgstr "Сертыфікат не пададзены"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1292
|
#: ../js/ui/components/telepathyClient.js:1306
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Сертыфікат не заслугоўвае даверу"
|
msgstr "Сертыфікат не заслугоўвае даверу"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1294
|
#: ../js/ui/components/telepathyClient.js:1308
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Сертыфікат састарэў"
|
msgstr "Сертыфікат састарэў"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1296
|
#: ../js/ui/components/telepathyClient.js:1310
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Сертыфікат не актывізаваны"
|
msgstr "Сертыфікат не актывізаваны"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1298
|
#: ../js/ui/components/telepathyClient.js:1312
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Назва камп'ютара ў сертыфікаце не адпавядае патрэбнай"
|
msgstr "Назва камп'ютара ў сертыфікаце не адпавядае патрэбнай"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1300
|
#: ../js/ui/components/telepathyClient.js:1314
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Адбітак сертыфіката не адпавядае патрэбнаму"
|
msgstr "Адбітак сертыфіката не адпавядае патрэбнаму"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1302
|
#: ../js/ui/components/telepathyClient.js:1316
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Сертыфікат уласнаручна падпісаны"
|
msgstr "Сертыфікат уласнаручна падпісаны"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1304
|
#: ../js/ui/components/telepathyClient.js:1318
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Уключаны рэжым па-за сеткай"
|
msgstr "Уключаны рэжым па-за сеткай"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1306
|
#: ../js/ui/components/telepathyClient.js:1320
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Шыфраванне недаступнае"
|
msgstr "Шыфраванне недаступнае"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1308
|
#: ../js/ui/components/telepathyClient.js:1322
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Хібны сертыфікат"
|
msgstr "Хібны сертыфікат"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1310
|
#: ../js/ui/components/telepathyClient.js:1324
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Адмоўлена ў злучэнні"
|
msgstr "Адмоўлена ў злучэнні"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1312
|
#: ../js/ui/components/telepathyClient.js:1326
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Не ўдалося ўсталяваць злучэнне"
|
msgstr "Не ўдалося ўсталяваць злучэнне"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1314
|
#: ../js/ui/components/telepathyClient.js:1328
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Злучэнне страчана"
|
msgstr "Злучэнне страчана"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1316
|
#: ../js/ui/components/telepathyClient.js:1330
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Гэты конт ужо злучаны з серверам"
|
msgstr "Гэты конт ужо злучаны з серверам"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1318
|
#: ../js/ui/components/telepathyClient.js:1332
|
||||||
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 "Злучэнне заменена новым для таго ж самага рэсурсу"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1320
|
#: ../js/ui/components/telepathyClient.js:1334
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Такі конт ужо існуе на серверы"
|
msgstr "Такі конт ужо існуе на серверы"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1322
|
#: ../js/ui/components/telepathyClient.js:1336
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Сервер надта заняты і не можа абслужыць гэта злучэнне"
|
msgstr "Сервер надта заняты і не можа абслужыць гэта злучэнне"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1324
|
#: ../js/ui/components/telepathyClient.js:1338
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Сертыфікат быў адкліканы"
|
msgstr "Сертыфікат быў адкліканы"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1326
|
#: ../js/ui/components/telepathyClient.js:1340
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "Для сертыфіката выкарыстаны слабы або небяспечны алгарытм шыфравання"
|
msgstr "Для сертыфіката выкарыстаны слабы або небяспечны алгарытм шыфравання"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1328
|
#: ../js/ui/components/telepathyClient.js:1342
|
||||||
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"
|
||||||
@ -835,30 +882,30 @@ msgstr ""
|
|||||||
"Даўжыня сертыфіката сервера або глыбіня яго ланцуга перавышае абмежаванне, "
|
"Даўжыня сертыфіката сервера або глыбіня яго ланцуга перавышае абмежаванне, "
|
||||||
"выстаўленае крыптаграфічнай бібліятэкай"
|
"выстаўленае крыптаграфічнай бібліятэкай"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1330
|
#: ../js/ui/components/telepathyClient.js:1344
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Унутраная памылка"
|
msgstr "Унутраная памылка"
|
||||||
|
|
||||||
#. 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:1340
|
#: ../js/ui/components/telepathyClient.js:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "не ўдалося злучыцца з %s"
|
msgstr "не ўдалося злучыцца з %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1349
|
#: ../js/ui/components/telepathyClient.js:1363
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Перазлучыцца"
|
msgstr "Перазлучыцца"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1350
|
#: ../js/ui/components/telepathyClient.js:1364
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Рэдагаваць конт"
|
msgstr "Рэдагаваць конт"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1395
|
#: ../js/ui/components/telepathyClient.js:1409
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Невядомая прычына"
|
msgstr "Невядомая прычына"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Паказаць праграмы"
|
msgstr "Паказаць праграмы"
|
||||||
|
|
||||||
@ -866,14 +913,14 @@ msgstr "Паказаць праграмы"
|
|||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Настройкі даты і часу"
|
msgstr "Настройкі даты і часу"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:109
|
#: ../js/ui/dateMenu.js:111
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Адкрыць каляндар"
|
msgstr "Адкрыць каляндар"
|
||||||
|
|
||||||
#. 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:175
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %e %B, %Y"
|
msgstr "%A, %e %B, %Y"
|
||||||
|
|
||||||
@ -984,84 +1031,76 @@ msgstr "Усталяваць"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?"
|
msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "трэй"
|
msgstr "трэй"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:545 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Клавіятура"
|
msgstr "Клавіятура"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:694
|
#: ../js/ui/lookingGlass.js:691
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Няма ўсталяваных пашырэнняў"
|
msgstr "Няма ўсталяваных пашырэнняў"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:748
|
#: ../js/ui/lookingGlass.js:745
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s не зрабіў ніякіх памылак."
|
msgstr "%s не зрабіў ніякіх памылак."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:754
|
#: ../js/ui/lookingGlass.js:751
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Хаваць памылкі"
|
msgstr "Хаваць памылкі"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
|
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Паказваць памылкі"
|
msgstr "Паказваць памылкі"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:767
|
#: ../js/ui/lookingGlass.js:764
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Уключана"
|
msgstr "Уключана"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
|
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Выключана"
|
msgstr "Выключана"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:772
|
#: ../js/ui/lookingGlass.js:769
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Памылка"
|
msgstr "Памылка"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:774
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Састарэла"
|
msgstr "Састарэла"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:776
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Сцягванне"
|
msgstr "Сцягванне"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:800
|
#: ../js/ui/lookingGlass.js:797
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Паглядзець выточны код"
|
msgstr "Паглядзець выточны код"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:809
|
#: ../js/ui/lookingGlass.js:806
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Сеціўная старонка"
|
msgstr "Сеціўная старонка"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1233
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Адкрыць"
|
msgstr "Адкрыць"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1240
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Выдаліць"
|
msgstr "Выдаліць"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1250
|
#: ../js/ui/messageTray.js:1540
|
||||||
msgid "Unmute"
|
|
||||||
msgstr "Вярнуць гук"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1250
|
|
||||||
msgid "Mute"
|
|
||||||
msgstr "Абязгучыць"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2037
|
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Абшар апавяшчэнняў"
|
msgstr "Абшар апавяшчэнняў"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2485
|
#: ../js/ui/messageTray.js:2547
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Сістэмная інфармацыя"
|
msgstr "Сістэмная інфармацыя"
|
||||||
|
|
||||||
@ -1070,11 +1109,11 @@ msgctxt "program"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Невядомая"
|
msgstr "Невядомая"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:83
|
#: ../js/ui/overview.js:82
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Адрабіць"
|
msgstr "Адрабіць"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:128
|
#: ../js/ui/overview.js:127
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "Агляд"
|
msgstr "Агляд"
|
||||||
|
|
||||||
@ -1082,13 +1121,13 @@ msgstr "Агляд"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:201
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Увядзіце тэкст для пошуку..."
|
msgstr "Увядзіце тэкст для пошуку..."
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:223
|
#: ../js/ui/overview.js:222
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Прыборная дошка"
|
msgstr "Прыборная дошка"
|
||||||
|
|
||||||
@ -1106,25 +1145,12 @@ msgstr "Заняткі"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Верхняя панэль"
|
msgstr "Верхняя панэль"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:115
|
|
||||||
#, c-format
|
|
||||||
msgid "Failed to unmount '%s'"
|
|
||||||
msgstr "Не ўдалося адмацаваць \"%s\""
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:118
|
|
||||||
msgid "Retry"
|
|
||||||
msgstr "Паўтарыць спробу"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:349
|
|
||||||
msgid "PLACES & DEVICES"
|
|
||||||
msgstr "МЕСЦЫ І ПРЫСТАСАВАННІ"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:728
|
#: ../js/ui/popupMenu.js:731
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -1134,7 +1160,7 @@ msgstr "Увядзіце загад:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d %B"
|
msgstr "%A, %d %B"
|
||||||
|
|
||||||
@ -1154,11 +1180,11 @@ msgstr[0] "%d новае апавяшчэнне"
|
|||||||
msgstr[1] "%d новыя апавяшчэнні"
|
msgstr[1] "%d новыя апавяшчэнні"
|
||||||
msgstr[2] "%d новых апавяшчэнняў"
|
msgstr[2] "%d новых апавяшчэнняў"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:277
|
#: ../js/ui/searchDisplay.js:275
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Пошук..."
|
msgstr "Пошук..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:328
|
#: ../js/ui/searchDisplay.js:323
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Нічога не знойдзена."
|
msgstr "Нічога не знойдзена."
|
||||||
|
|
||||||
@ -1170,11 +1196,11 @@ msgstr "Скапіраваць"
|
|||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "Уставіць"
|
msgstr "Уставіць"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:96
|
#: ../js/ui/shellEntry.js:102
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "Паказваць тэкст"
|
msgstr "Паказваць тэкст"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:98
|
#: ../js/ui/shellEntry.js:104
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "Хаваць тэкст"
|
msgstr "Хаваць тэкст"
|
||||||
|
|
||||||
@ -1186,7 +1212,7 @@ msgstr "Пароль"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Запомніць пароль"
|
msgstr "Запомніць пароль"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:138
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Разблакіраваць"
|
msgstr "Разблакіраваць"
|
||||||
|
|
||||||
@ -1305,7 +1331,7 @@ msgstr "Настройкі клавіятуры"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Настройкі мышы"
|
msgstr "Настройкі мышы"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Настройкі гуку"
|
msgstr "Настройкі гуку"
|
||||||
|
|
||||||
@ -1363,11 +1389,11 @@ msgstr "Увядзіце PIN, які паказвае прыстасаванне
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Добра"
|
msgstr "Добра"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Паказаць раскладку"
|
msgstr "Паказаць раскладку"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Настройкі мясцовасці і мовы"
|
msgstr "Настройкі мясцовасці і мовы"
|
||||||
|
|
||||||
@ -1594,7 +1620,7 @@ msgid "Unknown"
|
|||||||
msgstr "Невядомае"
|
msgstr "Невядомае"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Гучнасць"
|
msgstr "Гучнасць"
|
||||||
|
|
||||||
@ -1602,42 +1628,34 @@ msgstr "Гучнасць"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Мікрафон"
|
msgstr "Мікрафон"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:145
|
#: ../js/ui/unlockDialog.js:177
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Увайсці іншым карыстальнікам"
|
msgstr "Увайсці іншым карыстальнікам"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Даступны"
|
msgstr "Даступны"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Заняты"
|
msgstr "Заняты"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Нябачны"
|
msgstr "Нябачны"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Адсутны"
|
msgstr "Адсутны"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Бяздзейны"
|
msgstr "Бяздзейны"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Недаступны"
|
msgstr "Недаступны"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:756
|
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "Перамяніць карыстальніка"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
|
||||||
msgid "Switch Session"
|
|
||||||
msgstr "Перамяніць сеанс"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:740
|
#: ../js/ui/userMenu.js:740
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Апавяшчэнні"
|
msgstr "Апавяшчэнні"
|
||||||
@ -1646,6 +1664,10 @@ msgstr "Апавяшчэнні"
|
|||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Сістэмныя настройкі"
|
msgstr "Сістэмныя настройкі"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:756
|
||||||
|
msgid "Switch User"
|
||||||
|
msgstr "Перамяніць карыстальніка"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:761
|
#: ../js/ui/userMenu.js:761
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Выйсці з сеанса"
|
msgstr "Выйсці з сеанса"
|
||||||
@ -1671,19 +1693,19 @@ msgstr ""
|
|||||||
"сеціўны стан абноўлены інфармацыяй аб тым, што вы можаце не ўбачыць чужых "
|
"сеціўны стан абноўлены інфармацыяй аб тым, што вы можаце не ўбачыць чужых "
|
||||||
"паведамленняў у час."
|
"паведамленняў у час."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:86
|
#: ../js/ui/viewSelector.js:87
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Вокны"
|
msgstr "Вокны"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:90
|
#: ../js/ui/viewSelector.js:91
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Праграмы"
|
msgstr "Праграмы"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:95
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Пошук"
|
msgstr "Пошук"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:117
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1692,12 +1714,12 @@ msgstr ""
|
|||||||
"На жаль, на сёння не хапіла мудрасцяў:\n"
|
"На жаль, на сёння не хапіла мудрасцяў:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:127
|
#: ../js/ui/wanda.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "Так сказаў Вяшчун %s"
|
msgstr "Так сказаў Вяшчун %s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:162
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Ваша ўлюбёнае велікоднае яйка"
|
msgstr "Ваша ўлюбёнае велікоднае яйка"
|
||||||
|
|
||||||
@ -1734,19 +1756,19 @@ msgstr[2] "%u уваходаў"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Сістэмныя гукі"
|
msgstr "Сістэмныя гукі"
|
||||||
|
|
||||||
#: ../src/main.c:330
|
#: ../src/main.c:332
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Вывесці нумар версіі праграмы"
|
msgstr "Вывесці нумар версіі праграмы"
|
||||||
|
|
||||||
#: ../src/main.c:336
|
#: ../src/main.c:338
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Рэжым, які выкарыстоўвае GDM для экрана ўваходу"
|
msgstr "Рэжым, які выкарыстоўвае GDM для экрана ўваходу"
|
||||||
|
|
||||||
#: ../src/main.c:342
|
#: ../src/main.c:344
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "Ужыць асаблівы рэжым, напрыклад, \"gdm\" для экрана ўваходу"
|
msgstr "Ужыць асаблівы рэжым, напрыклад, \"gdm\" для экрана ўваходу"
|
||||||
|
|
||||||
#: ../src/main.c:348
|
#: ../src/main.c:350
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Вывесці спіс магчымых рэжымаў"
|
msgstr "Вывесці спіс магчымых рэжымаў"
|
||||||
|
|
||||||
@ -1774,25 +1796,3 @@ msgstr "Прадвызначана"
|
|||||||
#: ../src/shell-polkit-authentication-agent.c:343
|
#: ../src/shell-polkit-authentication-agent.c:343
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Карыстальнік праігнараваў дыялогавае акенца ідэнтыфікацыі"
|
msgstr "Карыстальнік праігнараваў дыялогавае акенца ідэнтыфікацыі"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
|
||||||
#. * nautilus
|
|
||||||
#: ../src/shell-util.c:94
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "Дом"
|
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
|
||||||
#. * nautilus
|
|
||||||
#: ../src/shell-util.c:104
|
|
||||||
msgid "File System"
|
|
||||||
msgstr "Файлавая сістэма"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
|
||||||
#. * method, and the second string is a path. For
|
|
||||||
#. * example, "Trash: some-directory". It means that the
|
|
||||||
#. * directory called "some-directory" is in the trash.
|
|
||||||
#.
|
|
||||||
#: ../src/shell-util.c:300
|
|
||||||
#, c-format
|
|
||||||
msgid "%1$s: %2$s"
|
|
||||||
msgstr "%1$s: %2$s"
|
|
||||||
|
215
po/bg.po
215
po/bg.po
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-09-15 08:27+0300\n"
|
"POT-Creation-Date: 2012-10-02 05:37+0300\n"
|
||||||
"PO-Revision-Date: 2012-09-15 08:27+0300\n"
|
"PO-Revision-Date: 2012-10-02 05:38+0300\n"
|
||||||
"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
|
"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
|
||||||
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
||||||
"Language: bg\n"
|
"Language: bg\n"
|
||||||
@ -17,6 +17,22 @@ msgstr ""
|
|||||||
"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"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "Снимки на екрана"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "Записване на екрана"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Системни"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "Показване на областта за уведомяване"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "Обвивка на GNOME"
|
msgstr "Обвивка на GNOME"
|
||||||
@ -190,21 +206,21 @@ msgid ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Задава конвейера на GStreamer, който ще се използва за кодиране на записите. "
|
"Задава конвейера на GStreamer, който ще се използва за кодиране на записите. "
|
||||||
"Използвайте синтаксиса на gst-launch. Конвейерът трябва да бъде с несвързан "
|
"Използвайте синтаксиса на gst-launch. Конвейерът трябва да бъде с несвързан "
|
||||||
"блок-приемник, където се записва видеото. Обикновено конвейерът е с "
|
"блок-приемник, където се записва видеото. Обикновено конвейерът е с "
|
||||||
"несвързан блок-източник. Изходът от този блок ще бъде записан в изходния "
|
"несвързан блок-източник. Изходът от този блок ще бъде записан в изходния "
|
||||||
"файл. Въпреки това конвейерът може да задава собствен изход — това може да "
|
"файл. Въпреки това конвейерът може да задава собствен изход — това може да "
|
||||||
"се използва за изпращане на изхода към icecast сървър чрез „shout2send“ или "
|
"се използва за изпращане на изхода към сървър за icecast чрез „shout2send“ "
|
||||||
"подобен елемент. Когато този ключ не е зададен или стойността му e празна, "
|
"или подобен елемент. Когато този ключ не е зададен или стойността му e "
|
||||||
"се използва стандартния конвейер. За момента това е „vp8enc quality=8 "
|
"празна, се използва стандартния конвейер. За момента това е „vp8enc "
|
||||||
"speed=6 threads=%T ! queue ! webmmux“ и записва видео контейнер WEBM и "
|
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||||
"използва кодера VP8. Стойността в „%T“ указва предполагаемия оптимален брой "
|
"queue ! webmmux“ и записва видео контейнер WEBM и използва кодера VP8. "
|
||||||
"нишки за системата."
|
"Стойността в „%T“ указва предполагаемия оптимален брой нишки за системата."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
@ -235,11 +251,11 @@ msgstr ""
|
|||||||
"Изберете разширение, което да се настрои като използвате падащото меню по-"
|
"Изберете разширение, което да се настрои като използвате падащото меню по-"
|
||||||
"горе."
|
"горе."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:528
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Сесия…"
|
msgstr "Сесия…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:676
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Регистриране"
|
msgstr "Регистриране"
|
||||||
@ -247,47 +263,56 @@ msgstr "Регистриране"
|
|||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:742
|
#: ../js/gdm/loginDialog.js:743
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Липсва в списъка?"
|
msgstr "Липсва в списъка?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:137
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Отказване"
|
msgstr "Отказване"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:901
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Регистриране"
|
msgstr "Регистриране"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1240
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Екран за идентификация"
|
msgstr "Екран за идентификация"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:772
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Спиране"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||||
|
#: ../js/ui/userMenu.js:778
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Приспиване"
|
msgstr "Приспиване"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Рестартиране"
|
msgstr "Рестартиране"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||||
#: ../js/ui/userMenu.js:771
|
#: ../js/ui/userMenu.js:777
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Изключване"
|
msgstr "Изключване"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "Грешка при удостоверяване"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(или се регистрирайте с пръстов отпечатък)"
|
msgstr "(или се регистрирайте с пръстов отпечатък)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(напр. потребител или %s)"
|
msgstr "(напр. потребител или %s)"
|
||||||
@ -990,76 +1015,76 @@ msgstr "Инсталиране"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?"
|
msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "област за уведомяване"
|
msgstr "област за уведомяване"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Клавиатура"
|
msgstr "Клавиатура"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:694
|
#: ../js/ui/lookingGlass.js:691
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Няма инсталирани разширения"
|
msgstr "Няма инсталирани разширения"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:748
|
#: ../js/ui/lookingGlass.js:745
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "Разширението %s не е обозначило никакви грешки."
|
msgstr "Разширението %s не е обозначило никакви грешки."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:754
|
#: ../js/ui/lookingGlass.js:751
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Скриване на грешките"
|
msgstr "Скриване на грешките"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
|
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Показване на грешките"
|
msgstr "Показване на грешките"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:767
|
#: ../js/ui/lookingGlass.js:764
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Включено"
|
msgstr "Включено"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
|
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Изключено"
|
msgstr "Изключено"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:772
|
#: ../js/ui/lookingGlass.js:769
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Грешка"
|
msgstr "Грешка"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:774
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Остаряло"
|
msgstr "Остаряло"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:776
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Изтегляне"
|
msgstr "Изтегляне"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:800
|
#: ../js/ui/lookingGlass.js:797
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Преглед на изходния код"
|
msgstr "Преглед на изходния код"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:809
|
#: ../js/ui/lookingGlass.js:806
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Домашна страница"
|
msgstr "Домашна страница"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1080
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Отваряне"
|
msgstr "Отваряне"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1087
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Изтриване"
|
msgstr "Изтриване"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2038
|
#: ../js/ui/messageTray.js:2088
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Област за уведомяване"
|
msgstr "Област за уведомяване"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2480
|
#: ../js/ui/messageTray.js:2551
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Информация за системата"
|
msgstr "Информация за системата"
|
||||||
|
|
||||||
@ -1104,19 +1129,6 @@ msgstr "Дейности"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Горна лента"
|
msgstr "Горна лента"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:115
|
|
||||||
#, c-format
|
|
||||||
msgid "Failed to unmount '%s'"
|
|
||||||
msgstr "Неуспех при демонтиране на „%s“"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:118
|
|
||||||
msgid "Retry"
|
|
||||||
msgstr "Нов опит"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:349
|
|
||||||
msgid "PLACES & DEVICES"
|
|
||||||
msgstr "МЕСТА И УСТРОЙСТВА"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
@ -1132,18 +1144,18 @@ msgstr "Въведете команда:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%3$d %2$B, %1$A"
|
msgstr "%3$d %2$B, %1$A"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
msgstr[0] "%d ново съобщение"
|
msgstr[0] "%d ново съобщение"
|
||||||
msgstr[1] "%d нови съобщения"
|
msgstr[1] "%d нови съобщения"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -1182,7 +1194,7 @@ msgstr "Парола"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Запомняне на паролата"
|
msgstr "Запомняне на паролата"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:140
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Отключване"
|
msgstr "Отключване"
|
||||||
|
|
||||||
@ -1300,7 +1312,7 @@ msgstr "Настройка на клавиатурата"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Настройки на мишката"
|
msgstr "Настройки на мишката"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Настройки на звука"
|
msgstr "Настройки на звука"
|
||||||
|
|
||||||
@ -1358,11 +1370,11 @@ msgstr "Въведете кода на устройството %s."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Добре"
|
msgstr "Добре"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Показване на клавиатурната подредба"
|
msgstr "Показване на клавиатурната подредба"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Настройки на региона и езика"
|
msgstr "Настройки на региона и езика"
|
||||||
|
|
||||||
@ -1585,7 +1597,7 @@ msgid "Unknown"
|
|||||||
msgstr "Неизвестно"
|
msgstr "Неизвестно"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Сила на звука"
|
msgstr "Сила на звука"
|
||||||
|
|
||||||
@ -1593,67 +1605,67 @@ msgstr "Сила на звука"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Микрофон"
|
msgstr "Микрофон"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:147
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Влезте като друг потребител"
|
msgstr "Влезте като друг потребител"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "На линия"
|
msgstr "На линия"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Зает"
|
msgstr "Зает"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Невидим"
|
msgstr "Невидим"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Отсъстващ"
|
msgstr "Отсъстващ"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Бездействие"
|
msgstr "Бездействие"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Недостъпно"
|
msgstr "Недостъпно"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
|
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Смяна на потребител"
|
msgstr "Смяна на потребител"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "Switch Session"
|
msgid "Switch Session"
|
||||||
msgstr "Смяна на сесия"
|
msgstr "Смяна на сесия"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:737
|
#: ../js/ui/userMenu.js:743
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Известия"
|
msgstr "Известия"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:745
|
#: ../js/ui/userMenu.js:751
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Настройки на системата"
|
msgstr "Системни настройки"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:758
|
#: ../js/ui/userMenu.js:764
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Изход"
|
msgstr "Изход"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:763
|
#: ../js/ui/userMenu.js:769
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Заключване"
|
msgstr "Заключване"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:778
|
#: ../js/ui/userMenu.js:784
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "Инсталиране на обновленията и рестартиране"
|
msgstr "Инсталиране на обновленията и рестартиране"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:796
|
#: ../js/ui/userMenu.js:802
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Състоянието ви ще се зададе да е „Зает“"
|
msgstr "Състоянието ви ще се зададе да е „Зает“"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:803
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1662,19 +1674,19 @@ msgstr ""
|
|||||||
"онлайн е обновено, за да покаже на другите, че може и да не видите веднага "
|
"онлайн е обновено, за да покаже на другите, че може и да не видите веднага "
|
||||||
"техните съобщения."
|
"техните съобщения."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:86
|
#: ../js/ui/viewSelector.js:85
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Прозорци"
|
msgstr "Прозорци"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:90
|
#: ../js/ui/viewSelector.js:89
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Програми"
|
msgstr "Програми"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:93
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Търсене"
|
msgstr "Търсене"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:119
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1683,12 +1695,12 @@ msgstr ""
|
|||||||
"Мъдрост днес не ще да има:\n"
|
"Мъдрост днес не ще да има:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:127
|
#: ../js/ui/wanda.js:123
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "А пророчицата рече «%s»"
|
msgstr "А пророчицата рече «%s»"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:164
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Любимото ви великденско яйце"
|
msgstr "Любимото ви великденско яйце"
|
||||||
|
|
||||||
@ -1763,34 +1775,3 @@ msgstr "Стандартно"
|
|||||||
#: ../src/shell-polkit-authentication-agent.c:343
|
#: ../src/shell-polkit-authentication-agent.c:343
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Прозорецът за упълномощаване беше затворен от потребителя"
|
msgstr "Прозорецът за упълномощаване беше затворен от потребителя"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
|
||||||
#. * nautilus
|
|
||||||
#: ../src/shell-util.c:94
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "Домашна папка"
|
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
|
||||||
#. * nautilus
|
|
||||||
#: ../src/shell-util.c:104
|
|
||||||
msgid "File System"
|
|
||||||
msgstr "Файлова система"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
|
||||||
#. * method, and the second string is a path. For
|
|
||||||
#. * example, "Trash: some-directory". It means that the
|
|
||||||
#. * directory called "some-directory" is in the trash.
|
|
||||||
#.
|
|
||||||
#: ../src/shell-util.c:300
|
|
||||||
#, c-format
|
|
||||||
msgid "%1$s: %2$s"
|
|
||||||
msgstr "%1$s: %2$s"
|
|
||||||
|
|
||||||
#~ msgid "disabled OpenSearch providers"
|
|
||||||
#~ msgstr "изключени доставчици на OpenSearch"
|
|
||||||
|
|
||||||
#~ msgid "Connect to..."
|
|
||||||
#~ msgstr "Свързване към…"
|
|
||||||
|
|
||||||
#~ msgid "Passphrase"
|
|
||||||
#~ msgstr "Парола"
|
|
||||||
|
1649
po/ca@valencia.po
1649
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
189
po/el.po
189
po/el.po
@ -4,8 +4,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell.po.master\n"
|
"Project-Id-Version: gnome-shell.po.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: 2012-09-18 04:20+0000\n"
|
"POT-Creation-Date: 2012-10-16 20:41+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-18 15:57+0200\n"
|
"PO-Revision-Date: 2012-10-23 15:39+0200\n"
|
||||||
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
|
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
|
||||||
"Language-Team: team@gnome.gr\n"
|
"Language-Team: team@gnome.gr\n"
|
||||||
"Language: el\n"
|
"Language: el\n"
|
||||||
@ -17,6 +17,22 @@ msgstr ""
|
|||||||
"X-DamnedLies-Scope: partial\n"
|
"X-DamnedLies-Scope: partial\n"
|
||||||
"X-Poedit-SourceCharset: utf-8\n"
|
"X-Poedit-SourceCharset: utf-8\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "Στιγμιότυπα οθόνης"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "Καταγραφή ενός βίντεο οθόνης"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Σύστημα"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "Εμφάνιση της περιοχής ειδοποιήσεων"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell"
|
||||||
@ -166,36 +182,24 @@ msgstr "Ο τύπος του πληκτρολογίου που θα χρησιμ
|
|||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή των στιγμιοτύπων "
|
"Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή του βίντεο οθόνης."
|
||||||
"οθόνης."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα στιγμιοτύπων "
|
"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα βίντεο οθόνης "
|
||||||
"οθόνης του GNOME Shell σε καρέ ανά δευτερόλεπτο."
|
"του GNOME Shell σε καρέ ανά δευτερόλεπτο."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ο δίαυλος του gstreamer που χρησιμοποιήθηκε για την κωδικοποίηση του βίντεο "
|
"Ο δίαυλος του gstreamer που χρησιμοποιήθηκε για την κωδικοποίηση του βίντεο "
|
||||||
"παρουσίασης"
|
"οθόνης"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
#| msgid ""
|
|
||||||
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
|
||||||
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
|
||||||
#| "pad where the recorded video is recorded. It will normally have a "
|
|
||||||
#| "unconnected source pad; output from that pad will be written into the "
|
|
||||||
#| "output file. However the pipeline can also take care of its own output - "
|
|
||||||
#| "this might be used to send the output to an icecast server via shout2send "
|
|
||||||
#| "or similar. When unset or set to an empty value, the default pipeline "
|
|
||||||
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
|
|
||||||
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
|
|
||||||
#| "placeholder for a guess at the optimal thread count on the system."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -225,8 +229,7 @@ msgstr ""
|
|||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο "
|
"Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο οθόνης"
|
||||||
"παρουσίασης"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -234,7 +237,7 @@ msgid ""
|
|||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
"a different container format."
|
"a different container format."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Το όνομα αρχείου για τα καταγεγραμμένα στιγμιότυπα οθόνης θα είναι μοναδικό, "
|
"Το όνομα αρχείου για τα καταγεγραμμένα βίντεο οθόνης θα είναι μοναδικό, "
|
||||||
"βασισμένο στην τρέχουσα ημερομηνία και θα χρησιμοποιεί αυτή την επέκταση. Θα "
|
"βασισμένο στην τρέχουσα ημερομηνία και θα χρησιμοποιεί αυτή την επέκταση. Θα "
|
||||||
"πρέπει να αλλάζει όταν γίνεται εγγραφή σε διαφορετικό πρότυπο περιέκτη."
|
"πρέπει να αλλάζει όταν γίνεται εγγραφή σε διαφορετικό πρότυπο περιέκτη."
|
||||||
|
|
||||||
@ -255,11 +258,11 @@ msgstr ""
|
|||||||
"Επιλέξτε μια επέκταση για να την ρυθμίσετε χρησιμοποιώντας το πλαίσιο "
|
"Επιλέξτε μια επέκταση για να την ρυθμίσετε χρησιμοποιώντας το πλαίσιο "
|
||||||
"πολλαπλών επιλογών."
|
"πολλαπλών επιλογών."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:529
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Συνεδρία..."
|
msgstr "Συνεδρία..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:677
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Σύνδεση"
|
msgstr "Σύνδεση"
|
||||||
@ -267,47 +270,56 @@ msgstr "Σύνδεση"
|
|||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:742
|
#: ../js/gdm/loginDialog.js:736
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Δεν είστε στη λίστα;"
|
msgstr "Δεν είστε στη λίστα;"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:137
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Ακύρωση"
|
msgstr "Ακύρωση"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:894
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Σύνδεση"
|
msgstr "Σύνδεση"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1215
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Παράθυρο σύνδεσης"
|
msgstr "Παράθυρο σύνδεσης"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:772
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Ενέργεια"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||||
|
#: ../js/ui/userMenu.js:775
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Αναστολή"
|
msgstr "Αναστολή"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Επανεκκίνηση"
|
msgstr "Επανεκκίνηση"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:771
|
#: ../js/ui/userMenu.js:774
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Απενεργοποίηση"
|
msgstr "Απενεργοποίηση"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "Σφάλμα πιστοποίησης"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(ή περάστε το δάκτυλο σας)"
|
msgstr "(ή περάστε το δάκτυλο σας)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(π.χ χρήστης ή %s)"
|
msgstr "(π.χ χρήστης ή %s)"
|
||||||
@ -344,7 +356,7 @@ msgstr "ΡΥΘΜΙΣΕΙΣ"
|
|||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Νέο παράθυρο"
|
msgstr "Νέο παράθυρο"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Αφαίρεση από τα αγαπημένα"
|
msgstr "Αφαίρεση από τα αγαπημένα"
|
||||||
|
|
||||||
@ -508,16 +520,16 @@ msgstr "Αυτή η εβδομάδα"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Επόμενη εβδομάδα"
|
msgstr "Επόμενη εβδομάδα"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:278
|
#: ../js/ui/components/autorunManager.js:297
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "Αφαιρούμενες συσκευές"
|
msgstr "Αφαιρούμενες συσκευές"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:575
|
#: ../js/ui/components/autorunManager.js:594
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Άνοιγμα με %s"
|
msgstr "Άνοιγμα με %s"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:601
|
#: ../js/ui/components/autorunManager.js:620
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Εξαγωγή"
|
msgstr "Εξαγωγή"
|
||||||
|
|
||||||
@ -637,7 +649,7 @@ msgstr "Συγνώμη, αυτό δεν λειτούργησε. Παρακαλώ
|
|||||||
#: ../js/ui/components/recorder.js:44
|
#: ../js/ui/components/recorder.js:44
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Screencast from %d %t"
|
msgid "Screencast from %d %t"
|
||||||
msgstr "Βίντεο-παρουσίαση από %d %t"
|
msgstr "Βίντεο οθόνης από %d %t"
|
||||||
|
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
#. system-users for now as Empathy does.
|
#. system-users for now as Empathy does.
|
||||||
@ -891,7 +903,7 @@ msgstr "Επεξεργασία λογαριασμού"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Άγνωστος λόγος"
|
msgstr "Άγνωστος λόγος"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Προβολή εφαρμογών"
|
msgstr "Προβολή εφαρμογών"
|
||||||
|
|
||||||
@ -899,14 +911,14 @@ msgstr "Προβολή εφαρμογών"
|
|||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Ρυθμίσεις ώρας και ημερομηνίας"
|
msgstr "Ρυθμίσεις ώρας και ημερομηνίας"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:109
|
#: ../js/ui/dateMenu.js:111
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Άνοιγμα ημερολογίου"
|
msgstr "Άνοιγμα ημερολογίου"
|
||||||
|
|
||||||
#. 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:175
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %B %e, %Y"
|
msgstr "%A %B %e, %Y"
|
||||||
|
|
||||||
@ -959,7 +971,7 @@ msgstr "Απενεργοποίηση"
|
|||||||
msgid "Click Power Off to quit these applications and power off the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Πατήστε Απενεργοποίηση για να κλείσετε αυτές τις εφαρμογές και να "
|
"Πατήστε Απενεργοποίηση για να κλείσετε αυτές τις εφαρμογές και να "
|
||||||
"απενεργοποιήσετε το σύστημα."
|
"τερματίσετε το σύστημα."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:84
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -1013,11 +1025,11 @@ msgstr "Εγκατάσταση"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Λήψη και εγκατάσταση '%s' από το extensions.gnome.org ;"
|
msgstr "Λήψη και εγκατάσταση '%s' από το extensions.gnome.org ;"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "συρτάρι"
|
msgstr "περιοχή"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Πληκτρολόγιο"
|
msgstr "Πληκτρολόγιο"
|
||||||
@ -1070,19 +1082,19 @@ msgstr "Προβολή πηγής"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Ιστοσελίδα"
|
msgstr "Ιστοσελίδα"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1080
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Άνοιγμα"
|
msgstr "Άνοιγμα"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1087
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Αφαίρεση"
|
msgstr "Αφαίρεση"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2041
|
#: ../js/ui/messageTray.js:1540
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Περιοχή ειδοποιήσεων"
|
msgstr "Περιοχή ειδοποιήσεων"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2483
|
#: ../js/ui/messageTray.js:2547
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Πληροφορίες συστήματος"
|
msgstr "Πληροφορίες συστήματος"
|
||||||
|
|
||||||
@ -1142,7 +1154,7 @@ msgstr "Παρακαλώ πληκτρολογήστε μία εντολή:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %B %d"
|
msgstr "%A, %B %d"
|
||||||
|
|
||||||
@ -1192,7 +1204,7 @@ msgstr "Κωδικός"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Απομνημόνευση κωδικού"
|
msgstr "Απομνημόνευση κωδικού"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:140
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Ξεκλείδωμα"
|
msgstr "Ξεκλείδωμα"
|
||||||
|
|
||||||
@ -1311,7 +1323,7 @@ msgstr "Ρυθμίσεις πληκτρολογίου"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Ρυθμίσεις ποντικιού"
|
msgstr "Ρυθμίσεις ποντικιού"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Ρυθμίσεις ήχου"
|
msgstr "Ρυθμίσεις ήχου"
|
||||||
|
|
||||||
@ -1369,11 +1381,11 @@ msgstr "Παρακαλώ εισάγετε το PIN που αναφέρεται
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Εντάξει"
|
msgstr "Εντάξει"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Εμφάνιση διάταξης πληκτρολογίου"
|
msgstr "Εμφάνιση διάταξης πληκτρολογίου"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Ρυθμίσεις περιοχής και γλώσσας"
|
msgstr "Ρυθμίσεις περιοχής και γλώσσας"
|
||||||
|
|
||||||
@ -1596,7 +1608,7 @@ msgid "Unknown"
|
|||||||
msgstr "Άγνωστο"
|
msgstr "Άγνωστο"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Ένταση ήχου"
|
msgstr "Ένταση ήχου"
|
||||||
|
|
||||||
@ -1604,67 +1616,63 @@ msgstr "Ένταση ήχου"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Μικρόφωνο"
|
msgstr "Μικρόφωνο"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:147
|
#: ../js/ui/unlockDialog.js:177
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Είσοδος ως άλλος χρήστης"
|
msgstr "Είσοδος ως άλλος χρήστης"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Διαθέσιμος-η"
|
msgstr "Διαθέσιμος-η"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Απασχολημένος-η"
|
msgstr "Απασχολημένος-η"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Αόρατος-η"
|
msgstr "Αόρατος-η"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Απουσιάζει"
|
msgstr "Απουσιάζει"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Αδρανής"
|
msgstr "Αδρανής"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Μη διαθέσιμος-η"
|
msgstr "Μη διαθέσιμος-η"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
|
#: ../js/ui/userMenu.js:740
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "Αλλαγή χρήστη"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
|
||||||
msgid "Switch Session"
|
|
||||||
msgstr "Αλλαγή συνεδρίας"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:737
|
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Ειδοποιήσεις"
|
msgstr "Ειδοποιήσεις"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:745
|
#: ../js/ui/userMenu.js:748
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Ρυθμίσεις συστήματος"
|
msgstr "Ρυθμίσεις συστήματος"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:758
|
#: ../js/ui/userMenu.js:756
|
||||||
|
msgid "Switch User"
|
||||||
|
msgstr "Αλλαγή χρήστη"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:761
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Αποσύνδεση"
|
msgstr "Αποσύνδεση"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:763
|
#: ../js/ui/userMenu.js:766
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Κλείδωμα"
|
msgstr "Κλείδωμα"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:778
|
#: ../js/ui/userMenu.js:781
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "Εγκατάσταση ενημερώσεων & επανεκκίνηση"
|
msgstr "Εγκατάσταση ενημερώσεων & επανεκκίνηση"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:796
|
#: ../js/ui/userMenu.js:799
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Η κατάσταση συνομιλίας σας θα ορισθεί σε απασχολημένος"
|
msgstr "Η κατάσταση συνομιλίας σας θα ορισθεί σε απασχολημένος"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:800
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1685,7 +1693,7 @@ msgstr "Εφαρμογές"
|
|||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Αναζήτηση"
|
msgstr "Αναζήτηση"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:119
|
#: ../js/ui/wanda.js:117
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1694,12 +1702,12 @@ msgstr ""
|
|||||||
"Συγγνώμη, κανένα απόφθεγμα για εσάς σήμερα:\n"
|
"Συγγνώμη, κανένα απόφθεγμα για εσάς σήμερα:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "%s ο Προφήτης λέει"
|
msgstr "%s ο Προφήτης λέει"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:164
|
#: ../js/ui/wanda.js:162
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Το αγαπημένο σας Easter Egg"
|
msgstr "Το αγαπημένο σας Easter Egg"
|
||||||
|
|
||||||
@ -1734,20 +1742,20 @@ msgstr[1] "%u είσοδοι"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Ήχοι συστήματος"
|
msgstr "Ήχοι συστήματος"
|
||||||
|
|
||||||
#: ../src/main.c:330
|
#: ../src/main.c:332
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Εκτύπωση έκδοσης"
|
msgstr "Εκτύπωση έκδοσης"
|
||||||
|
|
||||||
#: ../src/main.c:336
|
#: ../src/main.c:338
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Λειτουργία που απαιτείται από το GDM για την οθόνη σύνδεσης"
|
msgstr "Λειτουργία που απαιτείται από το GDM για την οθόνη σύνδεσης"
|
||||||
|
|
||||||
#: ../src/main.c:342
|
#: ../src/main.c:344
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Χρησιμοποιήστε μια συγκεκριμένη λειτουργία, π.χ \"gdm\" για την οθόνη εισόδου"
|
"Χρησιμοποιήστε μια συγκεκριμένη λειτουργία, π.χ \"gdm\" για την οθόνη εισόδου"
|
||||||
|
|
||||||
#: ../src/main.c:348
|
#: ../src/main.c:350
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Λίστα πιθανών λειτουργιών"
|
msgstr "Λίστα πιθανών λειτουργιών"
|
||||||
|
|
||||||
@ -1776,6 +1784,9 @@ msgstr "Προεπιλογή"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Το παράθυρο πιστοποίησης έκλεισε από τον χρήστη"
|
msgstr "Το παράθυρο πιστοποίησης έκλεισε από τον χρήστη"
|
||||||
|
|
||||||
|
#~ msgid "Switch Session"
|
||||||
|
#~ msgstr "Αλλαγή συνεδρίας"
|
||||||
|
|
||||||
#~ msgid "disabled OpenSearch providers"
|
#~ msgid "disabled OpenSearch providers"
|
||||||
#~ msgstr "απενεργοποιημένοι πάροχοι OpenSearch"
|
#~ msgstr "απενεργοποιημένοι πάροχοι OpenSearch"
|
||||||
|
|
||||||
@ -1791,9 +1802,6 @@ msgstr "Το παράθυρο πιστοποίησης έκλεισε από τ
|
|||||||
#~ msgid "Home"
|
#~ msgid "Home"
|
||||||
#~ msgstr "Προσωπικός φάκελος"
|
#~ msgstr "Προσωπικός φάκελος"
|
||||||
|
|
||||||
#~ msgid "File System"
|
|
||||||
#~ msgstr "Σύστημα αρχείων"
|
|
||||||
|
|
||||||
#~ msgid "%1$s: %2$s"
|
#~ msgid "%1$s: %2$s"
|
||||||
#~ msgstr "%1$s: %2$s"
|
#~ msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
@ -1979,9 +1987,6 @@ msgstr "Το παράθυρο πιστοποίησης έκλεισε από τ
|
|||||||
#~ msgid "Opacity of the crosshairs"
|
#~ msgid "Opacity of the crosshairs"
|
||||||
#~ msgstr "Αδιαφάνεια του σκοπεύτρου"
|
#~ msgstr "Αδιαφάνεια του σκοπεύτρου"
|
||||||
|
|
||||||
#~ msgid "Screen position"
|
|
||||||
#~ msgstr "Θέση οθόνης"
|
|
||||||
|
|
||||||
#~ msgid "Scroll magnified contents beyond the edges of the desktop"
|
#~ msgid "Scroll magnified contents beyond the edges of the desktop"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Κύλιση σε μεγεθυμένα περιεχόμενα που βρίσκονται έξω από την επιφάνεια"
|
#~ "Κύλιση σε μεγεθυμένα περιεχόμενα που βρίσκονται έξω από την επιφάνεια"
|
||||||
|
415
po/en_GB.po
415
po/en_GB.po
@ -3,14 +3,16 @@
|
|||||||
# 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.
|
||||||
# Philip Withnall <philip@tecnocode.co.uk>, 2009, 2010.
|
# Philip Withnall <philip@tecnocode.co.uk>, 2009, 2010.
|
||||||
# Bruce Cowan <bruce@bcowan.me.uk>, 2010, 2011, 2012.
|
# Bruce Cowan <bruce@bcowan.me.uk>, 2010, 2011, 2012.
|
||||||
|
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"POT-Creation-Date: 2012-09-05 13:55+0100\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"PO-Revision-Date: 2012-09-05 13:57+0100\n"
|
"POT-Creation-Date: 2012-10-11 15:26+0000\n"
|
||||||
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
|
"PO-Revision-Date: 2012-09-27 23:56-0400\n"
|
||||||
"Language-Team: British English <en@li.org>\n"
|
"Last-Translator: Chris Leonard <cjlhomeaddress@gmail.com>\n"
|
||||||
|
"Language-Team: Sugar Labs\n"
|
||||||
"Language: en_GB\n"
|
"Language: en_GB\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"
|
||||||
@ -19,6 +21,22 @@ msgstr ""
|
|||||||
"X-Generator: Virtaal 0.7.1\n"
|
"X-Generator: Virtaal 0.7.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "Screenshots"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "Record a screencast"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "System"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "Show the message tray"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell"
|
||||||
@ -93,78 +111,74 @@ msgstr ""
|
|||||||
"favourites area."
|
"favourites area."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
msgid "disabled OpenSearch providers"
|
|
||||||
msgstr "disabled OpenSearch providers"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr "History for command (Alt+F2) dialogue"
|
msgstr "History for command (Alt+F2) dialogue"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "History for the looking glass dialogue"
|
msgstr "History for the looking glass dialogue"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||||
|
msgid ""
|
||||||
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last IM presence explicitly set by the user. "
|
"Internally used to store the last session presence status for the user. The "
|
||||||
"The value here is from the TpConnectionPresenceType enumeration."
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Internally used to store the last IM presence explicitly set by the user. "
|
"Internally used to store the last session presence status for the user. The "
|
||||||
"The value here is from the TpConnectionPresenceType enumeration."
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
msgid ""
|
|
||||||
"Internally used to store the last session presence status for the user. The "
|
|
||||||
"value here is from the GsmPresenceStatus enumeration."
|
|
||||||
msgstr ""
|
|
||||||
"Internally used to store the last session presence status for the user. The "
|
|
||||||
"value here is from the GsmPresenceStatus enumeration."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Show the week date in the calendar"
|
msgstr "Show the week date in the calendar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "If true, display the ISO week date in the calendar."
|
msgstr "If true, display the ISO week date in the calendar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Keybinding to open the application menu"
|
msgstr "Keybinding to open the application menu"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "Keybinding to open the application menu."
|
msgstr "Keybinding to open the application menu."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
msgid "Keybinding to toggle the visibility of the message tray"
|
msgid "Keybinding to toggle the visibility of the message tray"
|
||||||
msgstr "Keybinding to toggle the visibility of the message tray"
|
msgstr "Keybinding to toggle the visibility of the message tray"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid "Keybinding to toggle the visibility of the message tray."
|
msgid "Keybinding to toggle the visibility of the message tray."
|
||||||
msgstr "Keybinding to toggle the visibility of the message tray."
|
msgstr "Keybinding to toggle the visibility of the message tray."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "Keybinding to toggle the screen recorder"
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
msgstr "Keybinding to toggle the screen recorder"
|
msgstr "Keybinding to toggle the screen recorder"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
msgstr "Keybinding to start/stop the builtin screen recorder."
|
msgstr "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Which keyboard to use"
|
msgstr "Which keyboard to use"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "The type of keyboard to use."
|
msgstr "The type of keyboard to use."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Framerate used for recording screencasts."
|
msgstr "Framerate used for recording screencasts."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -172,11 +186,11 @@ msgstr ""
|
|||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames per second."
|
"screencast recorder in frames per second."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "The GStreamer pipeline used to encode the screencast"
|
msgstr "The GStreamer pipeline used to encode the screencast"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -186,9 +200,9 @@ msgid ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -197,15 +211,15 @@ msgstr ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "File extension used for storing the screencast"
|
msgstr "File extension used for storing the screencast"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -228,11 +242,11 @@ msgstr "Extension"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "Select an extension to configure using the combobox above."
|
msgstr "Select an extension to configure using the combobox above."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:529
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Session…"
|
msgstr "Session…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:677
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Sign In"
|
msgstr "Sign In"
|
||||||
@ -240,47 +254,56 @@ msgstr "Sign In"
|
|||||||
#. 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:742
|
#: ../js/gdm/loginDialog.js:736
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Not listed?"
|
msgstr "Not listed?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:134
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancel"
|
msgstr "Cancel"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:894
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Sign In"
|
msgstr "Sign In"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1215
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Login Window"
|
msgstr "Login Window"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Power"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:775
|
#: ../js/ui/userMenu.js:775
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspend"
|
msgstr "Suspend"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Restart"
|
msgstr "Restart"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:774
|
#: ../js/ui/userMenu.js:774
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Power Off"
|
msgstr "Power Off"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "Authentication error"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(or swipe finger)"
|
msgstr "(or swipe finger)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(e.g., user or %s)"
|
msgstr "(e.g., user or %s)"
|
||||||
@ -317,7 +340,7 @@ msgstr "SETTINGS"
|
|||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "New Window"
|
msgstr "New Window"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Remove from Favourites"
|
msgstr "Remove from Favourites"
|
||||||
|
|
||||||
@ -481,16 +504,16 @@ msgstr "This week"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Next week"
|
msgstr "Next week"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:264
|
#: ../js/ui/components/autorunManager.js:297
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "Removable Devices"
|
msgstr "Removable Devices"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:557
|
#: ../js/ui/components/autorunManager.js:594
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Open with %s"
|
msgstr "Open with %s"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:583
|
#: ../js/ui/components/autorunManager.js:620
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Eject"
|
msgstr "Eject"
|
||||||
|
|
||||||
@ -636,38 +659,46 @@ msgstr "Subscription request"
|
|||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Connection error"
|
msgstr "Connection error"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Unmute"
|
||||||
|
msgstr "Unmute"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Mute"
|
||||||
|
msgstr "Mute"
|
||||||
|
|
||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/components/telepathyClient.js:926
|
#: ../js/ui/components/telepathyClient.js:948
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Sent at <b>%X</b> on <b>%A</b>"
|
msgstr "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/components/telepathyClient.js:932
|
#: ../js/ui/components/telepathyClient.js:954
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Sent on <b>%A</b>, <b>%d B</b>"
|
msgstr "Sent on <b>%A</b>, <b>%d B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/components/telepathyClient.js:937
|
#: ../js/ui/components/telepathyClient.js:959
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Sent on <b>%A</b>, <b>%d %B</b>, %Y"
|
msgstr "Sent on <b>%A</b>, <b>%d %B</b>, %Y"
|
||||||
|
|
||||||
#. 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:966
|
#: ../js/ui/components/telepathyClient.js:988
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s is now known as %s"
|
msgstr "%s is now known as %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:1066
|
#: ../js/ui/components/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invitation to %s"
|
msgstr "Invitation to %s"
|
||||||
@ -675,42 +706,42 @@ msgstr "Invitation to %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:1074
|
#: ../js/ui/components/telepathyClient.js:1096
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s is inviting you to join %s"
|
msgstr "%s is inviting you to join %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1076
|
#: ../js/ui/components/telepathyClient.js:1098
|
||||||
#: ../js/ui/components/telepathyClient.js:1155
|
#: ../js/ui/components/telepathyClient.js:1177
|
||||||
#: ../js/ui/components/telepathyClient.js:1218
|
#: ../js/ui/components/telepathyClient.js:1240
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Decline"
|
msgstr "Decline"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1077
|
#: ../js/ui/components/telepathyClient.js:1099
|
||||||
#: ../js/ui/components/telepathyClient.js:1156
|
#: ../js/ui/components/telepathyClient.js:1178
|
||||||
#: ../js/ui/components/telepathyClient.js:1219
|
#: ../js/ui/components/telepathyClient.js:1241
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Accept"
|
msgstr "Accept"
|
||||||
|
|
||||||
#. 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:1107
|
#: ../js/ui/components/telepathyClient.js:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Video call from %s"
|
msgstr "Video call from %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:1110
|
#: ../js/ui/components/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Call from %s"
|
msgstr "Call from %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1115
|
#: ../js/ui/components/telepathyClient.js:1137
|
||||||
#: ../js/ui/status/bluetooth.js:346
|
#: ../js/ui/status/bluetooth.js:346
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Reject"
|
msgstr "Reject"
|
||||||
|
|
||||||
#. 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:1117
|
#: ../js/ui/components/telepathyClient.js:1139
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Answer"
|
msgstr "Answer"
|
||||||
|
|
||||||
@ -719,110 +750,110 @@ msgstr "Answer"
|
|||||||
#. * 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:1149
|
#: ../js/ui/components/telepathyClient.js:1171
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s is sending you %s"
|
msgstr "%s is sending you %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/components/telepathyClient.js:1184
|
#: ../js/ui/components/telepathyClient.js:1206
|
||||||
#, c-format
|
#, c-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 would like permission to see when you are online"
|
msgstr "%s would like permission to see when you are online"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1276
|
#: ../js/ui/components/telepathyClient.js:1298
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Network error"
|
msgstr "Network error"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1278
|
#: ../js/ui/components/telepathyClient.js:1300
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Authentication failed"
|
msgstr "Authentication failed"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1280
|
#: ../js/ui/components/telepathyClient.js:1302
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Encryption error"
|
msgstr "Encryption error"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1282
|
#: ../js/ui/components/telepathyClient.js:1304
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Certificate not provided"
|
msgstr "Certificate not provided"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1284
|
#: ../js/ui/components/telepathyClient.js:1306
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Certificate untrusted"
|
msgstr "Certificate untrusted"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1286
|
#: ../js/ui/components/telepathyClient.js:1308
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Certificate expired"
|
msgstr "Certificate expired"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1288
|
#: ../js/ui/components/telepathyClient.js:1310
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Certificate not activated"
|
msgstr "Certificate not activated"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1290
|
#: ../js/ui/components/telepathyClient.js:1312
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Certificate hostname mismatch"
|
msgstr "Certificate hostname mismatch"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1292
|
#: ../js/ui/components/telepathyClient.js:1314
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Certificate fingerprint mismatch"
|
msgstr "Certificate fingerprint mismatch"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1294
|
#: ../js/ui/components/telepathyClient.js:1316
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Certificate self-signed"
|
msgstr "Certificate self-signed"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1296
|
#: ../js/ui/components/telepathyClient.js:1318
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Status is set to offline"
|
msgstr "Status is set to offline"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1298
|
#: ../js/ui/components/telepathyClient.js:1320
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Encryption is not available"
|
msgstr "Encryption is not available"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1300
|
#: ../js/ui/components/telepathyClient.js:1322
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Certificate is invalid"
|
msgstr "Certificate is invalid"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1302
|
#: ../js/ui/components/telepathyClient.js:1324
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Connection has been refused"
|
msgstr "Connection has been refused"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1304
|
#: ../js/ui/components/telepathyClient.js:1326
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Connection can't be established"
|
msgstr "Connection can't be established"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1306
|
#: ../js/ui/components/telepathyClient.js:1328
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Connection has been lost"
|
msgstr "Connection has been lost"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1308
|
#: ../js/ui/components/telepathyClient.js:1330
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "This account is already connected to the server"
|
msgstr "This account is already connected to the server"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1310
|
#: ../js/ui/components/telepathyClient.js:1332
|
||||||
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 ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1312
|
#: ../js/ui/components/telepathyClient.js:1334
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "The account already exists on the server"
|
msgstr "The account already exists on the server"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1314
|
#: ../js/ui/components/telepathyClient.js:1336
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Server is currently too busy to handle the connection"
|
msgstr "Server is currently too busy to handle the connection"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1316
|
#: ../js/ui/components/telepathyClient.js:1338
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Certificate has been revoked"
|
msgstr "Certificate has been revoked"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1318
|
#: ../js/ui/components/telepathyClient.js:1340
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Certificate uses an insecure cypher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cypher algorithm or is cryptographically weak"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1320
|
#: ../js/ui/components/telepathyClient.js:1342
|
||||||
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"
|
||||||
@ -830,30 +861,30 @@ msgstr ""
|
|||||||
"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"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1322
|
#: ../js/ui/components/telepathyClient.js:1344
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Internal error"
|
msgstr "Internal error"
|
||||||
|
|
||||||
#. 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:1332
|
#: ../js/ui/components/telepathyClient.js:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Connection to %s failed"
|
msgstr "Connection to %s failed"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1341
|
#: ../js/ui/components/telepathyClient.js:1363
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Reconnect"
|
msgstr "Reconnect"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1342
|
#: ../js/ui/components/telepathyClient.js:1364
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Edit account"
|
msgstr "Edit account"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1387
|
#: ../js/ui/components/telepathyClient.js:1409
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Unknown reason"
|
msgstr "Unknown reason"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Show Applications"
|
msgstr "Show Applications"
|
||||||
|
|
||||||
@ -861,14 +892,14 @@ msgstr "Show Applications"
|
|||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Date and Time Settings"
|
msgstr "Date and Time Settings"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:109
|
#: ../js/ui/dateMenu.js:111
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Open Calendar"
|
msgstr "Open Calendar"
|
||||||
|
|
||||||
#. 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:175
|
#: ../js/ui/dateMenu.js:190
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %e %B, %Y"
|
msgstr "%A %e %B, %Y"
|
||||||
|
|
||||||
@ -969,84 +1000,76 @@ msgstr "Install"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Download and install '%s' from extensions.gnome.org?"
|
msgstr "Download and install '%s' from extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "tray"
|
msgstr "tray"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:545 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Keyboard"
|
msgstr "Keyboard"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:694
|
#: ../js/ui/lookingGlass.js:691
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "No extensions installed"
|
msgstr "No extensions installed"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:748
|
#: ../js/ui/lookingGlass.js:745
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s has not emitted any errors."
|
msgstr "%s has not emitted any errors."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:754
|
#: ../js/ui/lookingGlass.js:751
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Hide Errors"
|
msgstr "Hide Errors"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
|
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Show Errors"
|
msgstr "Show Errors"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:767
|
#: ../js/ui/lookingGlass.js:764
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Enabled"
|
msgstr "Enabled"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
|
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Disabled"
|
msgstr "Disabled"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:772
|
#: ../js/ui/lookingGlass.js:769
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Error"
|
msgstr "Error"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:774
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Out of date"
|
msgstr "Out of date"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:776
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Downloading"
|
msgstr "Downloading"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:800
|
#: ../js/ui/lookingGlass.js:797
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "View Source"
|
msgstr "View Source"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:809
|
#: ../js/ui/lookingGlass.js:806
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Web Page"
|
msgstr "Web Page"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1232
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Open"
|
msgstr "Open"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1239
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Remove"
|
msgstr "Remove"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1249
|
#: ../js/ui/messageTray.js:1540
|
||||||
msgid "Unmute"
|
|
||||||
msgstr "Unmute"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1249
|
|
||||||
msgid "Mute"
|
|
||||||
msgstr "Mute"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2030
|
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Message Tray"
|
msgstr "Message Tray"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2475
|
#: ../js/ui/messageTray.js:2547
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "System Information"
|
msgstr "System Information"
|
||||||
|
|
||||||
@ -1055,11 +1078,11 @@ msgctxt "program"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Unknown"
|
msgstr "Unknown"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:83
|
#: ../js/ui/overview.js:82
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Undo"
|
msgstr "Undo"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:128
|
#: ../js/ui/overview.js:127
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "Overview"
|
msgstr "Overview"
|
||||||
|
|
||||||
@ -1067,13 +1090,13 @@ msgstr "Overview"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:201
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Type to search…"
|
msgstr "Type to search…"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:223
|
#: ../js/ui/overview.js:222
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Dash"
|
msgstr "Dash"
|
||||||
|
|
||||||
@ -1091,25 +1114,12 @@ msgstr "Activities"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Top Bar"
|
msgstr "Top Bar"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:115
|
|
||||||
#, c-format
|
|
||||||
msgid "Failed to unmount '%s'"
|
|
||||||
msgstr "Failed to unmount '%s'"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:118
|
|
||||||
msgid "Retry"
|
|
||||||
msgstr "Retry"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:349
|
|
||||||
msgid "PLACES & DEVICES"
|
|
||||||
msgstr "PLACES & DEVICES"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:728
|
#: ../js/ui/popupMenu.js:731
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-us"
|
msgstr "toggle-switch-us"
|
||||||
|
|
||||||
@ -1119,7 +1129,7 @@ msgstr "Please enter a command:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d %B"
|
msgstr "%A, %d %B"
|
||||||
|
|
||||||
@ -1137,11 +1147,11 @@ msgid_plural "%d new notifications"
|
|||||||
msgstr[0] "%d new notification"
|
msgstr[0] "%d new notification"
|
||||||
msgstr[1] "%d new notifications"
|
msgstr[1] "%d new notifications"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:277
|
#: ../js/ui/searchDisplay.js:275
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Searching…"
|
msgstr "Searching…"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:328
|
#: ../js/ui/searchDisplay.js:323
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "No results."
|
msgstr "No results."
|
||||||
|
|
||||||
@ -1153,11 +1163,11 @@ msgstr "Copy"
|
|||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "Paste"
|
msgstr "Paste"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:96
|
#: ../js/ui/shellEntry.js:102
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "Show Text"
|
msgstr "Show Text"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:98
|
#: ../js/ui/shellEntry.js:104
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "Hide Text"
|
msgstr "Hide Text"
|
||||||
|
|
||||||
@ -1169,7 +1179,7 @@ msgstr "Password"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Remember Password"
|
msgstr "Remember Password"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:137
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Unlock"
|
msgstr "Unlock"
|
||||||
|
|
||||||
@ -1287,7 +1297,7 @@ msgstr "Keyboard Settings"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Mouse Settings"
|
msgstr "Mouse Settings"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Sound Settings"
|
msgstr "Sound Settings"
|
||||||
|
|
||||||
@ -1345,11 +1355,11 @@ msgstr "Please enter the PIN mentioned on the device."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Show Keyboard Layout"
|
msgstr "Show Keyboard Layout"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Region and Language Settings"
|
msgstr "Region and Language Settings"
|
||||||
|
|
||||||
@ -1572,7 +1582,7 @@ msgid "Unknown"
|
|||||||
msgstr "Unknown"
|
msgstr "Unknown"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volume"
|
msgstr "Volume"
|
||||||
|
|
||||||
@ -1580,42 +1590,34 @@ msgstr "Volume"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Microphone"
|
msgstr "Microphone"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:144
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Log in as another user"
|
msgstr "Log in as another user"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Available"
|
msgstr "Available"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Busy"
|
msgstr "Busy"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Invisible"
|
msgstr "Invisible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Away"
|
msgstr "Away"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Idle"
|
msgstr "Idle"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Unavailable"
|
msgstr "Unavailable"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:756
|
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "Switch User"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
|
||||||
msgid "Switch Session"
|
|
||||||
msgstr "Switch Session"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:740
|
#: ../js/ui/userMenu.js:740
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notifications"
|
msgstr "Notifications"
|
||||||
@ -1624,6 +1626,10 @@ msgstr "Notifications"
|
|||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "System Settings"
|
msgstr "System Settings"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:756
|
||||||
|
msgid "Switch User"
|
||||||
|
msgstr "Switch User"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:761
|
#: ../js/ui/userMenu.js:761
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Log Out"
|
msgstr "Log Out"
|
||||||
@ -1648,19 +1654,19 @@ msgstr ""
|
|||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:86
|
#: ../js/ui/viewSelector.js:85
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Windows"
|
msgstr "Windows"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:90
|
#: ../js/ui/viewSelector.js:89
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Applications"
|
msgstr "Applications"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:93
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Search"
|
msgstr "Search"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:117
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1669,12 +1675,12 @@ msgstr ""
|
|||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:127
|
#: ../js/ui/wanda.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "%s the Oracle says"
|
msgstr "%s the Oracle says"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:162
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Your favourite Easter Egg"
|
msgstr "Your favourite Easter Egg"
|
||||||
|
|
||||||
@ -1709,19 +1715,19 @@ msgstr[1] "%u Inputs"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "System Sounds"
|
msgstr "System Sounds"
|
||||||
|
|
||||||
#: ../src/main.c:330
|
#: ../src/main.c:332
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Print version"
|
msgstr "Print version"
|
||||||
|
|
||||||
#: ../src/main.c:336
|
#: ../src/main.c:338
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Mode used by GDM for login screen"
|
msgstr "Mode used by GDM for login screen"
|
||||||
|
|
||||||
#: ../src/main.c:342
|
#: ../src/main.c:344
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgstr "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
|
|
||||||
#: ../src/main.c:348
|
#: ../src/main.c:350
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "List possible modes"
|
msgstr "List possible modes"
|
||||||
|
|
||||||
@ -1750,27 +1756,26 @@ msgstr "Default"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Authentication dialogue was dismissed by the user"
|
msgstr "Authentication dialogue was dismissed by the user"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#~ msgid "Switch Session"
|
||||||
#. * nautilus
|
#~ msgstr "Switch Session"
|
||||||
#: ../src/shell-util.c:94
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "Home"
|
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#~ msgid "disabled OpenSearch providers"
|
||||||
#. * nautilus
|
#~ msgstr "disabled OpenSearch providers"
|
||||||
#: ../src/shell-util.c:104
|
|
||||||
msgid "File System"
|
|
||||||
msgstr "File System"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
#~ msgid "Failed to unmount '%s'"
|
||||||
#. * method, and the second string is a path. For
|
#~ msgstr "Failed to unmount '%s'"
|
||||||
#. * example, "Trash: some-directory". It means that the
|
|
||||||
#. * directory called "some-directory" is in the trash.
|
#~ msgid "Retry"
|
||||||
#.
|
#~ msgstr "Retry"
|
||||||
#: ../src/shell-util.c:300
|
|
||||||
#, c-format
|
#~ msgid "PLACES & DEVICES"
|
||||||
msgid "%1$s: %2$s"
|
#~ msgstr "PLACES & DEVICES"
|
||||||
msgstr "%1$s: %2$s"
|
|
||||||
|
#~ msgid "Home"
|
||||||
|
#~ msgstr "Home"
|
||||||
|
|
||||||
|
#~ msgid "%1$s: %2$s"
|
||||||
|
#~ msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
#~ msgid "Show time with seconds"
|
#~ msgid "Show time with seconds"
|
||||||
#~ msgstr "Show time with seconds"
|
#~ msgstr "Show time with seconds"
|
||||||
|
220
po/es.po
220
po/es.po
@ -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: 2012-09-18 12:59+0000\n"
|
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-18 16:34+0200\n"
|
"PO-Revision-Date: 2012-10-16 11:06+0200\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@ -21,6 +21,32 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||||
"X-Generator: Gtranslator 2.91.5\n"
|
"X-Generator: Gtranslator 2.91.5\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "Capturas de pantalla"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "Grabar una captura de pantalla"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Sistema"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "Mostrar la bandeja de mensajes"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||||
|
#| msgid "Show Applications"
|
||||||
|
msgid "Show all applications"
|
||||||
|
msgstr "Mostrar todas las aplicaciones"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||||
|
#| msgid "Keybinding to open the application menu"
|
||||||
|
msgid "Open the application menu"
|
||||||
|
msgstr "Abrir el menú de la aplicación"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell"
|
||||||
@ -139,34 +165,47 @@ msgid "Keybinding to open the application menu."
|
|||||||
msgstr "Asociación de teclas para abrir el menú de la aplicación."
|
msgstr "Asociación de teclas para abrir el menú de la aplicación."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
|
#| msgid "Keybinding to open the application menu"
|
||||||
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
|
msgstr "Asociación de teclas para la vista «Mostrar aplicaciones»"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
|
#| msgid "Keybinding to open the application menu."
|
||||||
|
msgid ""
|
||||||
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
|
msgstr ""
|
||||||
|
"Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista "
|
||||||
|
"de actividades."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "Keybinding to toggle the visibility of the message tray"
|
msgid "Keybinding to toggle the visibility of the message tray"
|
||||||
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes"
|
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to toggle the visibility of the message tray."
|
msgid "Keybinding to toggle the visibility of the message tray."
|
||||||
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes."
|
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to toggle the screen recorder"
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
msgstr "Asociación de teclas cambiar el grabador de pantalla"
|
msgstr "Asociación de teclas cambiar el grabador de pantalla"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
msgstr "Asociación de teclas para iniciar/detener el grabador de pantalla."
|
msgstr "Asociación de teclas para iniciar/detener el grabador de pantalla."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Qué teclado usar"
|
msgstr "Qué teclado usar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "El tipo de teclado que usar."
|
msgstr "El tipo de teclado que usar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -174,23 +213,12 @@ msgstr ""
|
|||||||
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
|
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
|
||||||
"«screencast» de GNOME Shell, en fotogramas por segundo."
|
"«screencast» de GNOME Shell, en fotogramas por segundo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
|
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
#| msgid ""
|
|
||||||
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
|
||||||
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
|
||||||
#| "pad where the recorded video is recorded. It will normally have a "
|
|
||||||
#| "unconnected source pad; output from that pad will be written into the "
|
|
||||||
#| "output file. However the pipeline can also take care of its own output - "
|
|
||||||
#| "this might be used to send the output to an icecast server via shout2send "
|
|
||||||
#| "or similar. When unset or set to an empty value, the default pipeline "
|
|
||||||
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
|
|
||||||
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
|
|
||||||
#| "placeholder for a guess at the optimal thread count on the system."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -215,11 +243,11 @@ msgstr ""
|
|||||||
"threads=%T ! queue ! webmmux» y graba en WEBM usando el códec VP8. Se usa %T "
|
"threads=%T ! queue ! webmmux» y graba en WEBM usando el códec VP8. Se usa %T "
|
||||||
"como marcador de posición para el número de hilos óptimos en el sistema."
|
"como marcador de posición para el número de hilos óptimos en el sistema."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
|
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -243,11 +271,11 @@ msgid "Select an extension to configure using the combobox above."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:529
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sesión…"
|
msgstr "Sesión…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:677
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
@ -255,47 +283,56 @@ msgstr "Iniciar sesión"
|
|||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:742
|
#: ../js/gdm/loginDialog.js:736
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "¿No está en la lista?"
|
msgstr "¿No está en la lista?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:137
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:894
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1215
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Ventana de inicio de sesión"
|
msgstr "Ventana de inicio de sesión"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:772
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Energía"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||||
|
#: ../js/ui/userMenu.js:775
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Reiniciar"
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:771
|
#: ../js/ui/userMenu.js:774
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "Error de autenticación"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(o pase el dedo)"
|
msgstr "(o pase el dedo)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(ej., usuario o %s)"
|
msgstr "(ej., usuario o %s)"
|
||||||
@ -332,7 +369,7 @@ msgstr "CONFIGURACIÓN"
|
|||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Ventana nueva"
|
msgstr "Ventana nueva"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Quitar de los favoritos"
|
msgstr "Quitar de los favoritos"
|
||||||
|
|
||||||
@ -496,16 +533,16 @@ msgstr "Esta semana"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "La semana que viene"
|
msgstr "La semana que viene"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:278
|
#: ../js/ui/components/autorunManager.js:297
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "Dispositivos extraíbles"
|
msgstr "Dispositivos extraíbles"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:575
|
#: ../js/ui/components/autorunManager.js:594
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Abrir con %s"
|
msgstr "Abrir con %s"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:601
|
#: ../js/ui/components/autorunManager.js:620
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Expulsar"
|
msgstr "Expulsar"
|
||||||
|
|
||||||
@ -879,7 +916,7 @@ msgstr "Editar cuenta"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razón desconocida"
|
msgstr "Razón desconocida"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Mostrar aplicaciones"
|
msgstr "Mostrar aplicaciones"
|
||||||
|
|
||||||
@ -887,14 +924,14 @@ msgstr "Mostrar aplicaciones"
|
|||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Ajustes de hora y fecha"
|
msgstr "Ajustes de hora y fecha"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:109
|
#: ../js/ui/dateMenu.js:111
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Abrir calendario"
|
msgstr "Abrir calendario"
|
||||||
|
|
||||||
#. 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:175
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %e de %B de %Y"
|
msgstr "%A, %e de %B de %Y"
|
||||||
|
|
||||||
@ -998,11 +1035,11 @@ 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:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "bandeja"
|
msgstr "bandeja"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
@ -1055,19 +1092,19 @@ msgstr "Ver fuente"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Página web"
|
msgstr "Página web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1080
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1087
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Quitar"
|
msgstr "Quitar"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2041
|
#: ../js/ui/messageTray.js:1540
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Bandeja de mensajes"
|
msgstr "Bandeja de mensajes"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2483
|
#: ../js/ui/messageTray.js:2547
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información del sistema"
|
msgstr "Información del sistema"
|
||||||
|
|
||||||
@ -1127,7 +1164,7 @@ msgstr "Introduzca un comando:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d de %B"
|
msgstr "%A, %d de %B"
|
||||||
|
|
||||||
@ -1177,7 +1214,7 @@ msgstr "Contraseña"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Recordar contraseña"
|
msgstr "Recordar contraseña"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:140
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Desbloquear"
|
msgstr "Desbloquear"
|
||||||
|
|
||||||
@ -1295,7 +1332,7 @@ msgstr "Configuración del teclado"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Ajustes del ratón…"
|
msgstr "Ajustes del ratón…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Configuración del sonido"
|
msgstr "Configuración del sonido"
|
||||||
|
|
||||||
@ -1353,11 +1390,11 @@ msgstr "Introduzca el PIN mencionado en el dispositivo."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Mostrar la distribución del teclado"
|
msgstr "Mostrar la distribución del teclado"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Configuración de región e idioma"
|
msgstr "Configuración de región e idioma"
|
||||||
|
|
||||||
@ -1580,7 +1617,7 @@ msgid "Unknown"
|
|||||||
msgstr "Desconocido"
|
msgstr "Desconocido"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volumen"
|
msgstr "Volumen"
|
||||||
|
|
||||||
@ -1588,67 +1625,63 @@ msgstr "Volumen"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Micrófono"
|
msgstr "Micrófono"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:147
|
#: ../js/ui/unlockDialog.js:177
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Iniciar sesión como otro usuario"
|
msgstr "Iniciar sesión como otro usuario"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Disponible"
|
msgstr "Disponible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Ocupado"
|
msgstr "Ocupado"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Invisible"
|
msgstr "Invisible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Ausente"
|
msgstr "Ausente"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Inactivo"
|
msgstr "Inactivo"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "No disponible"
|
msgstr "No disponible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
|
#: ../js/ui/userMenu.js:740
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "Cambiar de usuario"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
|
||||||
msgid "Switch Session"
|
|
||||||
msgstr "Cambiar de sesión"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:737
|
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificaciones"
|
msgstr "Notificaciones"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:745
|
#: ../js/ui/userMenu.js:748
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Configuración del sistema"
|
msgstr "Configuración del sistema"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:758
|
#: ../js/ui/userMenu.js:756
|
||||||
|
msgid "Switch User"
|
||||||
|
msgstr "Cambiar de usuario"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:761
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Cerrar la sesión"
|
msgstr "Cerrar la sesión"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:763
|
#: ../js/ui/userMenu.js:766
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Bloquear"
|
msgstr "Bloquear"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:778
|
#: ../js/ui/userMenu.js:781
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "Instalar actualizaciones y reiniciar"
|
msgstr "Instalar actualizaciones y reiniciar"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:796
|
#: ../js/ui/userMenu.js:799
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Su estado del chat se establecerá a «ocupado»"
|
msgstr "Su estado del chat se establecerá a «ocupado»"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:800
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1657,19 +1690,19 @@ msgstr ""
|
|||||||
"chat. Su estado en línea se ha ajustado para que otros sepan que puede no "
|
"chat. Su estado en línea se ha ajustado para que otros sepan que puede no "
|
||||||
"leer sus mensajes."
|
"leer sus mensajes."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:85
|
#: ../js/ui/viewSelector.js:87
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Ventanas"
|
msgstr "Ventanas"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:89
|
#: ../js/ui/viewSelector.js:91
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicaciones"
|
msgstr "Aplicaciones"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:93
|
#: ../js/ui/viewSelector.js:95
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Buscar"
|
msgstr "Buscar"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:119
|
#: ../js/ui/wanda.js:117
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1678,12 +1711,12 @@ msgstr ""
|
|||||||
"Hoy no tiene ningún mensaje:\n"
|
"Hoy no tiene ningún mensaje:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "%s el oráculo dice"
|
msgstr "%s el oráculo dice"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:164
|
#: ../js/ui/wanda.js:162
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Su mensaje oculto favorito"
|
msgstr "Su mensaje oculto favorito"
|
||||||
|
|
||||||
@ -1718,21 +1751,21 @@ msgstr[1] "%u entradas"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sonidos del sistema"
|
msgstr "Sonidos del sistema"
|
||||||
|
|
||||||
#: ../src/main.c:330
|
#: ../src/main.c:332
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Imprimir versión"
|
msgstr "Imprimir versión"
|
||||||
|
|
||||||
#: ../src/main.c:336
|
#: ../src/main.c:338
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modo usado por GDM para la pantalla de inicio"
|
msgstr "Modo usado por GDM para la pantalla de inicio"
|
||||||
|
|
||||||
#: ../src/main.c:342
|
#: ../src/main.c:344
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
|
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
|
||||||
"sesión"
|
"sesión"
|
||||||
|
|
||||||
#: ../src/main.c:348
|
#: ../src/main.c:350
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Listar los modos posibles"
|
msgstr "Listar los modos posibles"
|
||||||
|
|
||||||
@ -1761,6 +1794,9 @@ msgstr "Predeterminada"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "El usuario rechazó el diálogo de autenticación"
|
msgstr "El usuario rechazó el diálogo de autenticación"
|
||||||
|
|
||||||
|
#~ msgid "Switch Session"
|
||||||
|
#~ msgstr "Cambiar de sesión"
|
||||||
|
|
||||||
#~ msgid "disabled OpenSearch providers"
|
#~ msgid "disabled OpenSearch providers"
|
||||||
#~ msgstr "proveedores OpenSearch desactivados"
|
#~ msgstr "proveedores OpenSearch desactivados"
|
||||||
|
|
||||||
@ -1776,9 +1812,6 @@ msgstr "El usuario rechazó el diálogo de autenticación"
|
|||||||
#~ msgid "Home"
|
#~ msgid "Home"
|
||||||
#~ msgstr "Carpeta personal"
|
#~ msgstr "Carpeta personal"
|
||||||
|
|
||||||
#~ msgid "File System"
|
|
||||||
#~ msgstr "Sistema de archivos"
|
|
||||||
|
|
||||||
#~ msgid "%1$s: %2$s"
|
#~ msgid "%1$s: %2$s"
|
||||||
#~ msgstr "%1$s: %2$s"
|
#~ msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
@ -2058,9 +2091,6 @@ msgstr "El usuario rechazó el diálogo de autenticación"
|
|||||||
#~ msgid "Opacity of the crosshairs"
|
#~ msgid "Opacity of the crosshairs"
|
||||||
#~ msgstr "Opacidad de las cruces"
|
#~ msgstr "Opacidad de las cruces"
|
||||||
|
|
||||||
#~ msgid "Screen position"
|
|
||||||
#~ msgstr "Posición de la pantalla"
|
|
||||||
|
|
||||||
#~ msgid "Scroll magnified contents beyond the edges of the desktop"
|
#~ msgid "Scroll magnified contents beyond the edges of the desktop"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Desplazar el contenido magnificado más allá de los bordes del escritorio"
|
#~ "Desplazar el contenido magnificado más allá de los bordes del escritorio"
|
||||||
|
425
po/fa.po
425
po/fa.po
@ -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: 2012-09-06 15:33+0000\n"
|
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-06 20:44+0330\n"
|
"PO-Revision-Date: 2012-10-12 20:16+0330\n"
|
||||||
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
|
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
|
||||||
"Language-Team: Persian\n"
|
"Language-Team: Persian\n"
|
||||||
"Language: fa\n"
|
"Language: fa\n"
|
||||||
@ -20,6 +20,24 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||||
"X-Poedit-SourceCharset: utf-8\n"
|
"X-Poedit-SourceCharset: utf-8\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "عکسهای صفحه"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "ضبط یک تصویربرداری از صفحهنمایش"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
#| msgid "File System"
|
||||||
|
msgid "System"
|
||||||
|
msgstr "سیستم"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
#| msgid "Message Tray"
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "نمایش سینی پیام"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "پوستهی گنوم"
|
msgstr "پوستهی گنوم"
|
||||||
@ -96,18 +114,14 @@ msgid ""
|
|||||||
msgstr "برنامههای مشابه این شناسهها در قسمت مورد پسندها نمایش داده میشود."
|
msgstr "برنامههای مشابه این شناسهها در قسمت مورد پسندها نمایش داده میشود."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
msgid "disabled OpenSearch providers"
|
|
||||||
msgstr "غیرفعال کردنِ تامینکنندهگان OpenSearch"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr "تاریخچهی فرمان برای محاورهی (Alt-F2)"
|
msgstr "تاریخچهی فرمان برای محاورهی (Alt-F2)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "تاریخچه برای نما محاوره شیشهای"
|
msgstr "تاریخچه برای نما محاوره شیشهای"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last IM presence explicitly set by the user. "
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
"The value here is from the TpConnectionPresenceType enumeration."
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
@ -115,7 +129,7 @@ msgstr ""
|
|||||||
"بهطور داخلی جهت ذخیرهی آخرین وضعیتِ حاضرِ ثبت شدهی توسط کاربر استفاده میشود. "
|
"بهطور داخلی جهت ذخیرهی آخرین وضعیتِ حاضرِ ثبت شدهی توسط کاربر استفاده میشود. "
|
||||||
"مقدار اینجا از محل محاسبهی TpConnectionPresenceType است."
|
"مقدار اینجا از محل محاسبهی TpConnectionPresenceType است."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last session presence status for the user. The "
|
"Internally used to store the last session presence status for the user. The "
|
||||||
"value here is from the GsmPresenceStatus enumeration."
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
@ -123,53 +137,51 @@ msgstr ""
|
|||||||
"بهطور داخلی برای ذخیره آخرین نشستی که کاربر در آن وضعیت حاضر داشته است "
|
"بهطور داخلی برای ذخیره آخرین نشستی که کاربر در آن وضعیت حاضر داشته است "
|
||||||
"استفاده میشود. مقدار اینجا از محاسبه GsmPresenceStatus است."
|
"استفاده میشود. مقدار اینجا از محاسبه GsmPresenceStatus است."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "نمایش هفته در تقویم"
|
msgstr "نمایش هفته در تقویم"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "در صورت تنظیم بر روی «درست»، تاریخ هفتگی ایزو را در تقویم نشان میدهد."
|
msgstr "در صورت تنظیم بر روی «درست»، تاریخ هفتگی ایزو را در تقویم نشان میدهد."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "کلید مقید برای باز کردن منو برنامه"
|
msgstr "کلید مقید برای باز کردن منو برنامه"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "کلید مقید برای باز کردن منو برنامه."
|
msgstr "کلید مقید برای باز کردن منو برنامه."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
#| msgid "Keybinding to toggle the screen recorder"
|
|
||||||
msgid "Keybinding to toggle the visibility of the message tray"
|
msgid "Keybinding to toggle the visibility of the message tray"
|
||||||
msgstr "کلید مقید برای تغییر وضعیت نمایش سینی پیامها"
|
msgstr "کلید مقید برای تغییر وضعیت نمایش سینی پیامها"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
#| msgid "Keybinding to toggle the screen recorder"
|
|
||||||
msgid "Keybinding to toggle the visibility of the message tray."
|
msgid "Keybinding to toggle the visibility of the message tray."
|
||||||
msgstr "کلید مقید برای تغییر وضعیت نمایش سینی پیامها."
|
msgstr "کلید مقید برای تغییر وضعیت نمایش سینی پیامها."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "Keybinding to toggle the screen recorder"
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
msgstr "کلید مقید برای تغییر وضعیت ضبط کنندهی صفحه"
|
msgstr "کلید مقید برای تغییر وضعیت ضبط کنندهی صفحه"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
msgstr "کلید مقید برای شروع/توقف ضبط کنندهی صفحه پیش ساخته."
|
msgstr "کلید مقید برای شروع/توقف ضبط کنندهی صفحه پیش ساخته."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "استفاده از کدام صفحهکلید"
|
msgstr "استفاده از کدام صفحهکلید"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "نوع صفحهکلید جهت استفاده"
|
msgstr "نوع صفحهکلید جهت استفاده"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "سرعت فریم استفاده شده در تصویربرداری از صفحهنمایش."
|
msgstr "سرعت فریم استفاده شده در تصویربرداری از صفحهنمایش."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -177,12 +189,23 @@ msgstr ""
|
|||||||
"سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر "
|
"سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر "
|
||||||
"پوستهی گنوم بر اساس فریم بر ثانیه"
|
"پوستهی گنوم بر اساس فریم بر ثانیه"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش"
|
msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
|
#| msgid ""
|
||||||
|
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
||||||
|
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
||||||
|
#| "pad where the recorded video is recorded. It will normally have a "
|
||||||
|
#| "unconnected source pad; output from that pad will be written into the "
|
||||||
|
#| "output file. However the pipeline can also take care of its own output - "
|
||||||
|
#| "this might be used to send the output to an icecast server via shout2send "
|
||||||
|
#| "or similar. When unset or set to an empty value, the default pipeline "
|
||||||
|
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
|
||||||
|
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
|
||||||
|
#| "placeholder for a guess at the optimal thread count on the system."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -191,9 +214,9 @@ msgid ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -202,15 +225,15 @@ msgstr ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "پسوند پروندهی قابل استفاده برای ذخیره تصویربرداری از صفحهنمایش"
|
msgstr "پسوند پروندهی قابل استفاده برای ذخیره تصویربرداری از صفحهنمایش"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -226,7 +249,6 @@ msgid "There was an error loading the preferences dialog for %s:"
|
|||||||
msgstr "خطایی هنگام باز کردن محاورهی ترجیحات برای %s رُخ داد:"
|
msgstr "خطایی هنگام باز کردن محاورهی ترجیحات برای %s رُخ داد:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:164
|
#: ../js/extensionPrefs/main.js:164
|
||||||
#| msgid "<b>Extension</b>"
|
|
||||||
msgid "Extension"
|
msgid "Extension"
|
||||||
msgstr "افزونه"
|
msgstr "افزونه"
|
||||||
|
|
||||||
@ -234,11 +256,11 @@ msgstr "افزونه"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "با استفاده از جعبهی بالا یک افزونه برای پیکربندی انتخاب کنید."
|
msgstr "با استفاده از جعبهی بالا یک افزونه برای پیکربندی انتخاب کنید."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:528
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "نشست..."
|
msgstr "نشست..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:676
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "ورود"
|
msgstr "ورود"
|
||||||
@ -246,47 +268,58 @@ msgstr "ورود"
|
|||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:742
|
#: ../js/gdm/loginDialog.js:743
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "فهرست نشده؟"
|
msgstr "فهرست نشده؟"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:135
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "لغو"
|
msgstr "لغو"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:901
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "ورود"
|
msgstr "ورود"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1240
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "پنجرهی ورود به سیستم"
|
msgstr "پنجرهی ورود به سیستم"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
#| msgid "Power Off"
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "انرژی"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:775
|
#: ../js/ui/userMenu.js:775
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "تعلیق"
|
msgstr "تعلیق"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "راهاندازی مجدد"
|
msgstr "راهاندازی مجدد"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:774
|
#: ../js/ui/userMenu.js:774
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "خاموش کردن"
|
msgstr "خاموش کردن"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
#| msgid "Authentication Required"
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "خطا تایید هویت"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(یا انگشتتان را بکشید)"
|
msgstr "(یا انگشتتان را بکشید)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(برای مثال, کاربر یا %s)"
|
msgstr "(برای مثال, کاربر یا %s)"
|
||||||
@ -487,16 +520,16 @@ msgstr "این هفته"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "هفته آینده"
|
msgstr "هفته آینده"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:278
|
#: ../js/ui/components/autorunManager.js:297
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "دستگاههای جدا شدنی"
|
msgstr "دستگاههای جدا شدنی"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:571
|
#: ../js/ui/components/autorunManager.js:594
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "باز کردن با %s"
|
msgstr "باز کردن با %s"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:597
|
#: ../js/ui/components/autorunManager.js:620
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "بیرون دادن"
|
msgstr "بیرون دادن"
|
||||||
|
|
||||||
@ -640,38 +673,46 @@ msgstr "درخواست اشتراک"
|
|||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "خطا اتصال"
|
msgstr "خطا اتصال"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Unmute"
|
||||||
|
msgstr "باصدا"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Mute"
|
||||||
|
msgstr "بیصدا"
|
||||||
|
|
||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/components/telepathyClient.js:934
|
#: ../js/ui/components/telepathyClient.js:948
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "ارسال در <b>%OH:%OM</b> در <b>%A</b>"
|
msgstr "ارسال در <b>%OH:%OM</b> در <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/components/telepathyClient.js:940
|
#: ../js/ui/components/telepathyClient.js:954
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "ارسال در <b>%A</b>, <b>%B %d</b>"
|
msgstr "ارسال در <b>%A</b>, <b>%B %d</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/components/telepathyClient.js:945
|
#: ../js/ui/components/telepathyClient.js:959
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "ارسال در <b>%A</b>, <b>%B %d</b>, %Y"
|
msgstr "ارسال در <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/components/telepathyClient.js:974
|
#: ../js/ui/components/telepathyClient.js:988
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s با عنوان %s شناخته میشود"
|
msgstr "%s با عنوان %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:1074
|
#: ../js/ui/components/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "دعوتنامه به %s"
|
msgstr "دعوتنامه به %s"
|
||||||
@ -679,42 +720,42 @@ msgstr "دعوتنامه به %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:1082
|
#: ../js/ui/components/telepathyClient.js:1096
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s از شما دعوت میکند که به %s بپیوندید"
|
msgstr "%s از شما دعوت میکند که به %s بپیوندید"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1084
|
#: ../js/ui/components/telepathyClient.js:1098
|
||||||
#: ../js/ui/components/telepathyClient.js:1163
|
#: ../js/ui/components/telepathyClient.js:1177
|
||||||
#: ../js/ui/components/telepathyClient.js:1226
|
#: ../js/ui/components/telepathyClient.js:1240
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "رد کردن"
|
msgstr "رد کردن"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1085
|
#: ../js/ui/components/telepathyClient.js:1099
|
||||||
#: ../js/ui/components/telepathyClient.js:1164
|
#: ../js/ui/components/telepathyClient.js:1178
|
||||||
#: ../js/ui/components/telepathyClient.js:1227
|
#: ../js/ui/components/telepathyClient.js:1241
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "پذیرفتن"
|
msgstr "پذیرفتن"
|
||||||
|
|
||||||
#. 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:1115
|
#: ../js/ui/components/telepathyClient.js:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "تماس ویدئویی از طریق %s"
|
msgstr "تماس ویدئویی از طریق %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:1118
|
#: ../js/ui/components/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "تماس از طرف %s"
|
msgstr "تماس از طرف %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1123
|
#: ../js/ui/components/telepathyClient.js:1137
|
||||||
#: ../js/ui/status/bluetooth.js:346
|
#: ../js/ui/status/bluetooth.js:346
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "رد کردن"
|
msgstr "رد کردن"
|
||||||
|
|
||||||
#. 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:1125
|
#: ../js/ui/components/telepathyClient.js:1139
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "پاسخگویی"
|
msgstr "پاسخگویی"
|
||||||
|
|
||||||
@ -723,111 +764,111 @@ msgstr "پاسخگویی"
|
|||||||
#. * 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:1157
|
#: ../js/ui/components/telepathyClient.js:1171
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s در حال ارسال %s به شما است"
|
msgstr "%s در حال ارسال %s به شما است"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/components/telepathyClient.js:1192
|
#: ../js/ui/components/telepathyClient.js:1206
|
||||||
#, c-format
|
#, c-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 اجازه دسترسی برای دیدن زمانهایی که شما برخط هستید را دارد"
|
msgstr "%s اجازه دسترسی برای دیدن زمانهایی که شما برخط هستید را دارد"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1284
|
#: ../js/ui/components/telepathyClient.js:1298
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "خطا شبکه"
|
msgstr "خطا شبکه"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1286
|
#: ../js/ui/components/telepathyClient.js:1300
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "تایید هویت شکست خورد"
|
msgstr "تایید هویت شکست خورد"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1288
|
#: ../js/ui/components/telepathyClient.js:1302
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "خطا رمزنگاری"
|
msgstr "خطا رمزنگاری"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1290
|
#: ../js/ui/components/telepathyClient.js:1304
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "گواهینامه ارائه نشده"
|
msgstr "گواهینامه ارائه نشده"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1292
|
#: ../js/ui/components/telepathyClient.js:1306
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "گواهینامه نامعتبر است"
|
msgstr "گواهینامه نامعتبر است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1294
|
#: ../js/ui/components/telepathyClient.js:1308
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "گواهینامه منقضی شده"
|
msgstr "گواهینامه منقضی شده"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1296
|
#: ../js/ui/components/telepathyClient.js:1310
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "گواهینامه فعال نشده"
|
msgstr "گواهینامه فعال نشده"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1298
|
#: ../js/ui/components/telepathyClient.js:1312
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "نام کارگزار گواهینامه نامنطبق است"
|
msgstr "نام کارگزار گواهینامه نامنطبق است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1300
|
#: ../js/ui/components/telepathyClient.js:1314
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "اثرانگشت گواهینامه نامنطبق است"
|
msgstr "اثرانگشت گواهینامه نامنطبق است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1302
|
#: ../js/ui/components/telepathyClient.js:1316
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "گواهینامه خود-امضا شده"
|
msgstr "گواهینامه خود-امضا شده"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1304
|
#: ../js/ui/components/telepathyClient.js:1318
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "وضعیت بر روی برون خط تنظیم شده"
|
msgstr "وضعیت بر روی برون خط تنظیم شده"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1306
|
#: ../js/ui/components/telepathyClient.js:1320
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "رمزنگاری موجود نیست"
|
msgstr "رمزنگاری موجود نیست"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1308
|
#: ../js/ui/components/telepathyClient.js:1322
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "گواهینامه نامعتبر است"
|
msgstr "گواهینامه نامعتبر است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1310
|
#: ../js/ui/components/telepathyClient.js:1324
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "اتصال رد شده است"
|
msgstr "اتصال رد شده است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1312
|
#: ../js/ui/components/telepathyClient.js:1326
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "اتصال نمیتواند برقرار شود"
|
msgstr "اتصال نمیتواند برقرار شود"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1314
|
#: ../js/ui/components/telepathyClient.js:1328
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "اتصال از دست رفته است"
|
msgstr "اتصال از دست رفته است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1316
|
#: ../js/ui/components/telepathyClient.js:1330
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "این حساب قبلا به کارگزار متصل شده است"
|
msgstr "این حساب قبلا به کارگزار متصل شده است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1318
|
#: ../js/ui/components/telepathyClient.js:1332
|
||||||
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 ""
|
||||||
"اتصال توسط یک اتصال جدید که از منبع مشابه استفاده میکند، جایگزین شده است"
|
"اتصال توسط یک اتصال جدید که از منبع مشابه استفاده میکند، جایگزین شده است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1320
|
#: ../js/ui/components/telepathyClient.js:1334
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "حساب از قبل بر روی کارگزار وجود دارد"
|
msgstr "حساب از قبل بر روی کارگزار وجود دارد"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1322
|
#: ../js/ui/components/telepathyClient.js:1336
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "کارگزار در حال حاضر برای دست گرفتن اتصال بسیار مشغول است"
|
msgstr "کارگزار در حال حاضر برای دست گرفتن اتصال بسیار مشغول است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1324
|
#: ../js/ui/components/telepathyClient.js:1338
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "گواهینامه لغو شده است"
|
msgstr "گواهینامه لغو شده است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1326
|
#: ../js/ui/components/telepathyClient.js:1340
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"گواهینامه از الگوریتم رمزی نامطمئنی استفاده میکند یا از نظر cryptography "
|
"گواهینامه از الگوریتم رمزی نامطمئنی استفاده میکند یا از نظر cryptography "
|
||||||
"ضعیف است"
|
"ضعیف است"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1328
|
#: ../js/ui/components/telepathyClient.js:1342
|
||||||
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"
|
||||||
@ -835,31 +876,30 @@ msgstr ""
|
|||||||
"اندازه گواهینامه کارگزار، یا عمق حلقهی گواهینامه کارگزار، از محدودیت اعمال "
|
"اندازه گواهینامه کارگزار، یا عمق حلقهی گواهینامه کارگزار، از محدودیت اعمال "
|
||||||
"شده توسط کتابخانه cryptography تجاوز کرد"
|
"شده توسط کتابخانه cryptography تجاوز کرد"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1330
|
#: ../js/ui/components/telepathyClient.js:1344
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "خطای داخلی"
|
msgstr "خطای داخلی"
|
||||||
|
|
||||||
#. 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:1340
|
#: ../js/ui/components/telepathyClient.js:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "اتصال به %s شکست خورد"
|
msgstr "اتصال به %s شکست خورد"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1349
|
#: ../js/ui/components/telepathyClient.js:1363
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "اتصال مجدد"
|
msgstr "اتصال مجدد"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1350
|
#: ../js/ui/components/telepathyClient.js:1364
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "ویرایش حساب"
|
msgstr "ویرایش حساب"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1395
|
#: ../js/ui/components/telepathyClient.js:1409
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "دلیل ناشناخته"
|
msgstr "دلیل ناشناخته"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||||
#| msgid "Applications"
|
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "نمایش برنامهها"
|
msgstr "نمایش برنامهها"
|
||||||
|
|
||||||
@ -898,8 +938,8 @@ msgstr ""
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s will be logged out automatically in %d second."
|
msgid "%s will be logged out automatically in %d second."
|
||||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
||||||
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:70
|
#: ../js/ui/endSessionDialog.js:70
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -978,84 +1018,76 @@ msgstr "نصب"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
|
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "سینی"
|
msgstr "سینی"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:545 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "صفحهکلید"
|
msgstr "صفحهکلید"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:694
|
#: ../js/ui/lookingGlass.js:691
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "هیچ افزونهای نصب نشده است"
|
msgstr "هیچ افزونهای نصب نشده است"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:748
|
#: ../js/ui/lookingGlass.js:745
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "افزونه %s هیچ خطایی منتشر نکرده است."
|
msgstr "افزونه %s هیچ خطایی منتشر نکرده است."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:754
|
#: ../js/ui/lookingGlass.js:751
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "مخفی کردن خطاها"
|
msgstr "مخفی کردن خطاها"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
|
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "نمایش خطاها"
|
msgstr "نمایش خطاها"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:767
|
#: ../js/ui/lookingGlass.js:764
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "به کار انداختن"
|
msgstr "به کار انداختن"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
|
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "از کار انداختن"
|
msgstr "از کار انداختن"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:772
|
#: ../js/ui/lookingGlass.js:769
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "خطا"
|
msgstr "خطا"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:774
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "قدیمی"
|
msgstr "قدیمی"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:776
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "در حال بارگیری"
|
msgstr "در حال بارگیری"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:800
|
#: ../js/ui/lookingGlass.js:797
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "نمایش منبع"
|
msgstr "نمایش منبع"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:809
|
#: ../js/ui/lookingGlass.js:806
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "صفحهی وب"
|
msgstr "صفحهی وب"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1233
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "بازکردن"
|
msgstr "بازکردن"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1240
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "حذف"
|
msgstr "حذف"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1250
|
#: ../js/ui/messageTray.js:1533
|
||||||
msgid "Unmute"
|
|
||||||
msgstr "باصدا"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1250
|
|
||||||
msgid "Mute"
|
|
||||||
msgstr "بیصدا"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2037
|
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "سینی پیام"
|
msgstr "سینی پیام"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2485
|
#: ../js/ui/messageTray.js:2544
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "اطلاعات سیستم"
|
msgstr "اطلاعات سیستم"
|
||||||
|
|
||||||
@ -1064,11 +1096,11 @@ msgctxt "program"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "ناشناس"
|
msgstr "ناشناس"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:83
|
#: ../js/ui/overview.js:82
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "برگردان"
|
msgstr "برگردان"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:128
|
#: ../js/ui/overview.js:127
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "نمایکلی"
|
msgstr "نمایکلی"
|
||||||
|
|
||||||
@ -1076,13 +1108,13 @@ msgstr "نمایکلی"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:201
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "برای جستجو تایپ کنید..."
|
msgstr "برای جستجو تایپ کنید..."
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:223
|
#: ../js/ui/overview.js:222
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "دَش"
|
msgstr "دَش"
|
||||||
|
|
||||||
@ -1100,25 +1132,12 @@ msgstr "فعالیتها"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "نوار بالا"
|
msgstr "نوار بالا"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:115
|
|
||||||
#, c-format
|
|
||||||
msgid "Failed to unmount '%s'"
|
|
||||||
msgstr "عدم توانایی در پیاده کردن «%s»"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:118
|
|
||||||
msgid "Retry"
|
|
||||||
msgstr "سعی مجدد"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:349
|
|
||||||
msgid "PLACES & DEVICES"
|
|
||||||
msgstr "محلها و ابزارها"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:728
|
#: ../js/ui/popupMenu.js:731
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -1128,33 +1147,29 @@ msgstr "لطفا یک فرمان وارد کنید:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
#| msgctxt "calendar heading"
|
|
||||||
#| msgid "%A, %B %d"
|
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A، %Od %B"
|
msgstr "%A، %Od %B"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
msgstr[0] "%Id پیام جدید"
|
msgstr[0] "%Id پیام جدید"
|
||||||
msgstr[1] "%Id پیام جدید"
|
msgstr[1] "%Id پیام جدید"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "Notifications"
|
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
msgstr[0] "%Id اعلان جدید"
|
msgstr[0] "%Id اعلان جدید"
|
||||||
msgstr[1] "%Id اعلان جدید"
|
msgstr[1] "%Id اعلان جدید"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:277
|
#: ../js/ui/searchDisplay.js:275
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "درحال حستجو..."
|
msgstr "درحال حستجو..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:328
|
#: ../js/ui/searchDisplay.js:323
|
||||||
#| msgid "No matching results."
|
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "بدون نتیجه."
|
msgstr "بدون نتیجه."
|
||||||
|
|
||||||
@ -1166,25 +1181,23 @@ msgstr "رونوشت"
|
|||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "چسباندن"
|
msgstr "چسباندن"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:96
|
#: ../js/ui/shellEntry.js:102
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "نمایش متن"
|
msgstr "نمایش متن"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:98
|
#: ../js/ui/shellEntry.js:104
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "مخفیکردن متن"
|
msgstr "مخفیکردن متن"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:368
|
#: ../js/ui/shellMountOperation.js:368
|
||||||
#| msgid "Password:"
|
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "گذرواژه"
|
msgstr "گذرواژه"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:389
|
#: ../js/ui/shellMountOperation.js:389
|
||||||
#| msgid "Remember Passphrase"
|
|
||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "بهخاطر سپردن گذرواژه"
|
msgstr "بهخاطر سپردن گذرواژه"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:138
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "بازکردن قفل"
|
msgstr "بازکردن قفل"
|
||||||
|
|
||||||
@ -1302,7 +1315,7 @@ msgstr "تنظیمات صفحهکلید"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "تنظیمات موشی"
|
msgstr "تنظیمات موشی"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "تنظیمات صدا"
|
msgstr "تنظیمات صدا"
|
||||||
|
|
||||||
@ -1362,11 +1375,11 @@ msgstr "لطفا PIN ذکر شده در دستگاه را وارد کنید."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "تایید"
|
msgstr "تایید"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "نمایش چیدمان صفحهکلید"
|
msgstr "نمایش چیدمان صفحهکلید"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "تنظیمات ناحیه و زبان"
|
msgstr "تنظیمات ناحیه و زبان"
|
||||||
|
|
||||||
@ -1589,7 +1602,7 @@ msgid "Unknown"
|
|||||||
msgstr "ناشناس"
|
msgstr "ناشناس"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "بلندی صدا"
|
msgstr "بلندی صدا"
|
||||||
|
|
||||||
@ -1597,43 +1610,34 @@ msgstr "بلندی صدا"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "میکروفون"
|
msgstr "میکروفون"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:145
|
#: ../js/ui/unlockDialog.js:176
|
||||||
#| msgid "Login as another user"
|
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "ورود به سیستم بعنوان کاربری دیگر"
|
msgstr "ورود به سیستم بعنوان کاربری دیگر"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "در دسترس"
|
msgstr "در دسترس"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "مشغول"
|
msgstr "مشغول"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "نامرئی"
|
msgstr "نامرئی"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "غائب"
|
msgstr "غائب"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "بیکار"
|
msgstr "بیکار"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "خارج از دسترس"
|
msgstr "خارج از دسترس"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:756
|
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "تعویض کاربر"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
|
||||||
msgid "Switch Session"
|
|
||||||
msgstr "تعویض نشست"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:740
|
#: ../js/ui/userMenu.js:740
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "اعلانها"
|
msgstr "اعلانها"
|
||||||
@ -1642,6 +1646,10 @@ msgstr "اعلانها"
|
|||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "تنظیمات سیستم"
|
msgstr "تنظیمات سیستم"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:756
|
||||||
|
msgid "Switch User"
|
||||||
|
msgstr "تعویض کاربر"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:761
|
#: ../js/ui/userMenu.js:761
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "خروج از سیستم"
|
msgstr "خروج از سیستم"
|
||||||
@ -1666,19 +1674,19 @@ msgstr ""
|
|||||||
"هماکنون اعلانها، از جمله پیامهای گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونهای "
|
"هماکنون اعلانها، از جمله پیامهای گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونهای "
|
||||||
"تنظیم شده است که به دیگران نشان دهد ممکن است شما پیامهایشان را نبینید."
|
"تنظیم شده است که به دیگران نشان دهد ممکن است شما پیامهایشان را نبینید."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:86
|
#: ../js/ui/viewSelector.js:85
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "پنجرهها"
|
msgstr "پنجرهها"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:90
|
#: ../js/ui/viewSelector.js:89
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "برنامهها"
|
msgstr "برنامهها"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:93
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "جستجو"
|
msgstr "جستجو"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:117
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1687,12 +1695,12 @@ msgstr ""
|
|||||||
"شرمنده، هیچ تعبیری امروز برای شما وجود ندارد:\n"
|
"شرمنده، هیچ تعبیری امروز برای شما وجود ندارد:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:127
|
#: ../js/ui/wanda.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "%s پیشگو میگوید"
|
msgstr "%s پیشگو میگوید"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:162
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "تخممرغ شانسی مورد علاقه شما"
|
msgstr "تخممرغ شانسی مورد علاقه شما"
|
||||||
|
|
||||||
@ -1768,27 +1776,26 @@ msgstr "پیشفرض"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "محاوره تایید هویت از طرف کاربر رد شد"
|
msgstr "محاوره تایید هویت از طرف کاربر رد شد"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#~ msgid "disabled OpenSearch providers"
|
||||||
#. * nautilus
|
#~ msgstr "غیرفعال کردنِ تامینکنندهگان OpenSearch"
|
||||||
#: ../src/shell-util.c:94
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "خانه"
|
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#~ msgid "Failed to unmount '%s'"
|
||||||
#. * nautilus
|
#~ msgstr "عدم توانایی در پیاده کردن «%s»"
|
||||||
#: ../src/shell-util.c:104
|
|
||||||
msgid "File System"
|
|
||||||
msgstr "سیستم پروندهها"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
#~ msgid "Retry"
|
||||||
#. * method, and the second string is a path. For
|
#~ msgstr "سعی مجدد"
|
||||||
#. * example, "Trash: some-directory". It means that the
|
|
||||||
#. * directory called "some-directory" is in the trash.
|
#~ msgid "PLACES & DEVICES"
|
||||||
#.
|
#~ msgstr "محلها و ابزارها"
|
||||||
#: ../src/shell-util.c:300
|
|
||||||
#, c-format
|
#~ msgid "Switch Session"
|
||||||
msgid "%1$s: %2$s"
|
#~ msgstr "تعویض نشست"
|
||||||
msgstr "%1$s: %2$s"
|
|
||||||
|
#~ msgid "Home"
|
||||||
|
#~ msgstr "خانه"
|
||||||
|
|
||||||
|
#~ msgid "%1$s: %2$s"
|
||||||
|
#~ msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
#~ msgid "Connect to..."
|
#~ msgid "Connect to..."
|
||||||
#~ msgstr "اتصال به..."
|
#~ msgstr "اتصال به..."
|
||||||
@ -1845,16 +1852,16 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgstr "شبکه"
|
#~ msgstr "شبکه"
|
||||||
|
|
||||||
#~ msgid "%s is online."
|
#~ msgid "%s is online."
|
||||||
#~ msgstr "%s بر خط است."
|
#~ msgstr "%s بر خط است."
|
||||||
|
|
||||||
#~ msgid "%s is offline."
|
#~ msgid "%s is offline."
|
||||||
#~ msgstr "%s برون خط است."
|
#~ msgstr "%s برون خط است."
|
||||||
|
|
||||||
#~ msgid "%s is away."
|
#~ msgid "%s is away."
|
||||||
#~ msgstr "%s غایب است."
|
#~ msgstr "%s غایب است."
|
||||||
|
|
||||||
#~ msgid "%s is busy."
|
#~ msgid "%s is busy."
|
||||||
#~ msgstr "%s مشغول است."
|
#~ msgstr "%s مشغول است."
|
||||||
|
|
||||||
#~ msgid "Hidden"
|
#~ msgid "Hidden"
|
||||||
#~ msgstr "نامرئی"
|
#~ msgstr "نامرئی"
|
||||||
|
272
po/fr.po
272
po/fr.po
@ -5,7 +5,7 @@
|
|||||||
# Mathieu Bridon <bochecha@fedoraproject.org>, 2009.
|
# Mathieu Bridon <bochecha@fedoraproject.org>, 2009.
|
||||||
# Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>, 2010.
|
# Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>, 2010.
|
||||||
# Claude Paroz <claude@2xlibre.net>, 2010-2011.
|
# Claude Paroz <claude@2xlibre.net>, 2010-2011.
|
||||||
# Bruno Brouard <annoa.b@gmail.com>, 2011-12.
|
# Bruno Brouard <annoa.b@gmail.com>, 2011-2012.
|
||||||
# Cyril Arnaud <cyril dot arnaud at gmail dot com>, 2011.
|
# Cyril Arnaud <cyril dot arnaud at gmail dot com>, 2011.
|
||||||
# Luc Guillemin <luc.guillemin@gmail.com>, 2011.
|
# Luc Guillemin <luc.guillemin@gmail.com>, 2011.
|
||||||
# Luc Pionchon <pionchon.luc@gmail.com>, 2011.
|
# Luc Pionchon <pionchon.luc@gmail.com>, 2011.
|
||||||
@ -17,8 +17,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell master fr\n"
|
"Project-Id-Version: gnome-shell master fr\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: 2012-09-13 22:18+0000\n"
|
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-13 20:03+0200\n"
|
"PO-Revision-Date: 2012-10-04 15:34+0200\n"
|
||||||
"Last-Translator: Alexandre Franke <alexandre.franke@gmail.com>\n"
|
"Last-Translator: Alexandre Franke <alexandre.franke@gmail.com>\n"
|
||||||
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
|
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@ -27,6 +27,22 @@ msgstr ""
|
|||||||
"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"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "Captures d'écran"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "Enregistrer une vidéo d'écran"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Système"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "Afficher le tiroir de messagerie"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell"
|
||||||
@ -201,9 +217,9 @@ msgid ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Définition du pipeline GStreamer utilisé pour coder les enregistrements "
|
"Définition du pipeline GStreamer utilisé pour coder les enregistrements "
|
||||||
"vidéo. La syntaxe est identique à celle de gst-launch. Le connecteur "
|
"vidéo. La syntaxe est identique à celle de gst-launch. Le connecteur "
|
||||||
@ -213,10 +229,11 @@ msgstr ""
|
|||||||
"pipeline peut aussi se charger de sa propre sortie, par exemple pour diriger "
|
"pipeline peut aussi se charger de sa propre sortie, par exemple pour diriger "
|
||||||
"la sortie vers un serveur icecast via shout2send ou autre. Si cette clé "
|
"la sortie vers un serveur icecast via shout2send ou autre. Si cette clé "
|
||||||
"n'est pas définie ou si elle est vide, c'est le pipeline par défaut qui est "
|
"n'est pas définie ou si elle est vide, c'est le pipeline par défaut qui est "
|
||||||
"utilisé. Celui-ci est actuellement « vp8enc quality=8 speed=6 threads=%T ! "
|
"utilisé. Celui-ci est actuellement « vp8enc min_quantizer=13 "
|
||||||
"queue ! webmmux' » et l'enregistrement utilise le format WEBM et le codec "
|
"max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' » "
|
||||||
"VP8. %T est utilisé comme paramètre pour une supposition quant au nombre "
|
"et l'enregistrement utilise le format WEBM et le codec VP8. %T est utilisé "
|
||||||
"optimal de threads à utiliser sur le système."
|
"comme paramètre pour une supposition quant au nombre optimal de threads à "
|
||||||
|
"utiliser sur le système."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
@ -249,7 +266,7 @@ msgstr ""
|
|||||||
"Sélectionnez une extension à configurer en utilisant la boîte combinée ci-"
|
"Sélectionnez une extension à configurer en utilisant la boîte combinée ci-"
|
||||||
"dessus."
|
"dessus."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:527
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Session..."
|
msgstr "Session..."
|
||||||
|
|
||||||
@ -268,7 +285,7 @@ msgstr "Absent de la liste ?"
|
|||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:135
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuler"
|
msgstr "Annuler"
|
||||||
|
|
||||||
@ -281,27 +298,36 @@ msgstr "Se connecter"
|
|||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Fenêtre de connexion"
|
msgstr "Fenêtre de connexion"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:772
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Énergie"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||||
|
#: ../js/ui/userMenu.js:778
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Mettre en veille"
|
msgstr "Mettre en veille"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Redémarrer"
|
msgstr "Redémarrer"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||||
#: ../js/ui/userMenu.js:771
|
#: ../js/ui/userMenu.js:777
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Éteindre"
|
msgstr "Éteindre"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "Erreur d'authentification"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(ou faites glisser le doigt)"
|
msgstr "(ou faites glisser le doigt)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(par ex. utilisateur ou %s)"
|
msgstr "(par ex. utilisateur ou %s)"
|
||||||
@ -495,7 +521,7 @@ msgstr "Sa"
|
|||||||
#. Translators: Text to show if there are no events
|
#. Translators: Text to show if there are no events
|
||||||
#: ../js/ui/calendar.js:699
|
#: ../js/ui/calendar.js:699
|
||||||
msgid "Nothing Scheduled"
|
msgid "Nothing Scheduled"
|
||||||
msgstr "Rien au calendrier"
|
msgstr "Rien de prévu"
|
||||||
|
|
||||||
#. 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:715
|
#: ../js/ui/calendar.js:715
|
||||||
@ -919,7 +945,7 @@ msgstr "Paramètres de date et heure"
|
|||||||
|
|
||||||
#: ../js/ui/dateMenu.js:109
|
#: ../js/ui/dateMenu.js:109
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Ouvrir le calendrier"
|
msgstr "Ouvrir l'agenda"
|
||||||
|
|
||||||
# luc: FIXME: how to have a capitalized weekday (start of sentence)?
|
# luc: FIXME: how to have a capitalized weekday (start of sentence)?
|
||||||
# %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase)
|
# %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase)
|
||||||
@ -1041,56 +1067,56 @@ msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "tiroir de messagerie"
|
msgstr "tiroir de messagerie"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Clavier"
|
msgstr "Clavier"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:694
|
#: ../js/ui/lookingGlass.js:691
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Aucune extension installée"
|
msgstr "Aucune extension installée"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:748
|
#: ../js/ui/lookingGlass.js:745
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s n'a émis aucune erreur."
|
msgstr "%s n'a émis aucune erreur."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:754
|
#: ../js/ui/lookingGlass.js:751
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Masquer les erreurs"
|
msgstr "Masquer les erreurs"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
|
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Afficher les erreurs"
|
msgstr "Afficher les erreurs"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:767
|
#: ../js/ui/lookingGlass.js:764
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Activé"
|
msgstr "Activé"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
|
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Désactivé"
|
msgstr "Désactivé"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:772
|
#: ../js/ui/lookingGlass.js:769
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Erreur"
|
msgstr "Erreur"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:774
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Périmé"
|
msgstr "Périmé"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:776
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Téléchargement"
|
msgstr "Téléchargement"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:800
|
#: ../js/ui/lookingGlass.js:797
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Afficher la source"
|
msgstr "Afficher la source"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:809
|
#: ../js/ui/lookingGlass.js:806
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Page Web"
|
msgstr "Page Web"
|
||||||
|
|
||||||
@ -1102,11 +1128,11 @@ msgstr "Ouvrir"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Enlever"
|
msgstr "Enlever"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2025
|
#: ../js/ui/messageTray.js:2055
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Tiroir de messagerie"
|
msgstr "Tiroir de messagerie"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2475
|
#: ../js/ui/messageTray.js:2511
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informations du système"
|
msgstr "Informations du système"
|
||||||
|
|
||||||
@ -1151,19 +1177,6 @@ msgstr "Activités"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barre supérieure"
|
msgstr "Barre supérieure"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:115
|
|
||||||
#, c-format
|
|
||||||
msgid "Failed to unmount '%s'"
|
|
||||||
msgstr "Impossible de monter « %s »"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:118
|
|
||||||
msgid "Retry"
|
|
||||||
msgstr "Réessayer"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:349
|
|
||||||
msgid "PLACES & DEVICES"
|
|
||||||
msgstr "RACCOURCIS et PÉRIPHÉRIQUES"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
@ -1179,18 +1192,18 @@ msgstr "Veuillez saisir une commande :"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A %d %B"
|
msgstr "%A %d %B"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
msgstr[0] "Un nouveau message"
|
msgstr[0] "Un nouveau message"
|
||||||
msgstr[1] "%d nouveaux messages"
|
msgstr[1] "%d nouveaux messages"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -1229,7 +1242,7 @@ msgstr "Mot de passe"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Se souvenir du mot de passe"
|
msgstr "Se souvenir du mot de passe"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:138
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Déverrouiller"
|
msgstr "Déverrouiller"
|
||||||
|
|
||||||
@ -1409,11 +1422,11 @@ msgstr ""
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Valider"
|
msgstr "Valider"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Afficher la disposition du clavier"
|
msgstr "Afficher la disposition du clavier"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Paramètres de région et de langue"
|
msgstr "Paramètres de région et de langue"
|
||||||
|
|
||||||
@ -1644,67 +1657,67 @@ msgstr "Volume"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Microphone"
|
msgstr "Microphone"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:145
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Se connecter en tant qu'un autre utilisateur"
|
msgstr "Se connecter en tant qu'un autre utilisateur"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Disponible"
|
msgstr "Disponible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Occupé"
|
msgstr "Occupé"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Invisible"
|
msgstr "Invisible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Absent"
|
msgstr "Absent"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Inactif"
|
msgstr "Inactif"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Non disponible"
|
msgstr "Non disponible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
|
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Changer d'utilisateur"
|
msgstr "Changer d'utilisateur"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "Switch Session"
|
msgid "Switch Session"
|
||||||
msgstr "Changer de session"
|
msgstr "Changer de session"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:737
|
#: ../js/ui/userMenu.js:743
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notifications"
|
msgstr "Notifications"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:745
|
#: ../js/ui/userMenu.js:751
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Paramètres système"
|
msgstr "Paramètres système"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:758
|
#: ../js/ui/userMenu.js:764
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Fermer la session"
|
msgstr "Fermer la session"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:763
|
#: ../js/ui/userMenu.js:769
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Verrouiller"
|
msgstr "Verrouiller"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:778
|
#: ../js/ui/userMenu.js:784
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "Installer les mises à jour et redémarrer"
|
msgstr "Installer les mises à jour et redémarrer"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:796
|
#: ../js/ui/userMenu.js:802
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Votre statut pour les discussions sera défini à occupé"
|
msgstr "Votre statut pour les discussions sera défini à occupé"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:803
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1713,19 +1726,19 @@ msgstr ""
|
|||||||
"discussion. Votre statut en ligne a été modifié afin que les autres sachent "
|
"discussion. Votre statut en ligne a été modifié afin que les autres sachent "
|
||||||
"qu'il se peut que vous ne voyez pas leurs messages."
|
"qu'il se peut que vous ne voyez pas leurs messages."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:86
|
#: ../js/ui/viewSelector.js:85
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Fenêtres"
|
msgstr "Fenêtres"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:90
|
#: ../js/ui/viewSelector.js:89
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Applications"
|
msgstr "Applications"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:93
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Recherche"
|
msgstr "Recherche"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:119
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1734,12 +1747,12 @@ msgstr ""
|
|||||||
"Désolé, aucune sagesse pour vous aujourd'hui :\n"
|
"Désolé, aucune sagesse pour vous aujourd'hui :\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:127
|
#: ../js/ui/wanda.js:123
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "L'Oracle %s déclare"
|
msgstr "L'Oracle %s déclare"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:164
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Votre œuf de Pâques favori"
|
msgstr "Votre œuf de Pâques favori"
|
||||||
|
|
||||||
@ -1750,7 +1763,7 @@ msgstr "« %s » est prêt"
|
|||||||
|
|
||||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||||
msgid "Evolution Calendar"
|
msgid "Evolution Calendar"
|
||||||
msgstr "Calendrier Evolution"
|
msgstr "Agenda d'Evolution"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
@ -1815,108 +1828,3 @@ msgstr "Défaut"
|
|||||||
#: ../src/shell-polkit-authentication-agent.c:343
|
#: ../src/shell-polkit-authentication-agent.c:343
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "La fenêtre d'authentification a été écartée par l'utilisateur"
|
msgstr "La fenêtre d'authentification a été écartée par l'utilisateur"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
|
||||||
#. * nautilus
|
|
||||||
#: ../src/shell-util.c:94
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "Dossier personnel"
|
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
|
||||||
#. * nautilus
|
|
||||||
#: ../src/shell-util.c:104
|
|
||||||
msgid "File System"
|
|
||||||
msgstr "Système de fichiers"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
|
||||||
#. * method, and the second string is a path. For
|
|
||||||
#. * example, "Trash: some-directory". It means that the
|
|
||||||
#. * directory called "some-directory" is in the trash.
|
|
||||||
#.
|
|
||||||
#: ../src/shell-util.c:300
|
|
||||||
#, c-format
|
|
||||||
msgid "%1$s: %2$s"
|
|
||||||
msgstr "%1$s : %2$s"
|
|
||||||
|
|
||||||
#~ msgid "disabled OpenSearch providers"
|
|
||||||
#~ msgstr "fournisseurs OpenSearch désactivés"
|
|
||||||
|
|
||||||
#~ msgid "Show time with seconds"
|
|
||||||
#~ msgstr "Afficher l'heure avec les secondes"
|
|
||||||
|
|
||||||
#~ msgid "If true, display seconds in time."
|
|
||||||
#~ msgstr "Si vrai, afficher les secondes dans l'horloge."
|
|
||||||
|
|
||||||
#~ msgid "Show date in clock"
|
|
||||||
#~ msgstr "Afficher la date dans l'horloge"
|
|
||||||
|
|
||||||
#~ msgid "If true, display date in the clock, in addition to time."
|
|
||||||
#~ msgstr "Si vrai, afficher la date dans l'horloge, en plus de l'heure."
|
|
||||||
|
|
||||||
#~ msgid "Offline"
|
|
||||||
#~ msgstr "Déconnecté"
|
|
||||||
|
|
||||||
#~ msgid "CONTACTS"
|
|
||||||
#~ msgstr "CONTACTS"
|
|
||||||
|
|
||||||
#~ msgid "%a %b %e, %R:%S"
|
|
||||||
#~ msgstr "%a %e %b, %R:%S"
|
|
||||||
|
|
||||||
#~ msgid "%a %b %e, %R"
|
|
||||||
#~ msgstr "%a %e %b, %R"
|
|
||||||
|
|
||||||
#~ msgid "%a %R:%S"
|
|
||||||
#~ msgstr "%a %R:%S"
|
|
||||||
|
|
||||||
#~ msgid "%a %R"
|
|
||||||
#~ msgstr "%a %R"
|
|
||||||
|
|
||||||
#~ msgid "%a %b %e, %l:%M:%S %p"
|
|
||||||
#~ msgstr "%a %e %b, %l:%M:%S %p"
|
|
||||||
|
|
||||||
#~ msgid "%a %b %e, %l:%M %p"
|
|
||||||
#~ msgstr "%a %e %b, %l:%M %p"
|
|
||||||
|
|
||||||
#~ msgid "%a %l:%M:%S %p"
|
|
||||||
#~ msgstr "%a %l:%M:%S %p"
|
|
||||||
|
|
||||||
#~ msgid "%a %l:%M %p"
|
|
||||||
#~ msgstr "%a %l:%M %p"
|
|
||||||
|
|
||||||
#~ msgid "Connect to..."
|
|
||||||
#~ msgstr "Connexion à..."
|
|
||||||
|
|
||||||
#~ msgid "Wrong password, please try again"
|
|
||||||
#~ msgstr "Mot de passe incorrect, réessayez"
|
|
||||||
|
|
||||||
#~ msgid "Network"
|
|
||||||
#~ msgstr "Réseau"
|
|
||||||
|
|
||||||
#~ msgid "%s is online."
|
|
||||||
#~ msgstr "%s est en ligne."
|
|
||||||
|
|
||||||
#
|
|
||||||
# luc: note: Empathy utilise « déconnecté »
|
|
||||||
#~ msgid "%s is offline."
|
|
||||||
#~ msgstr "%s est hors ligne."
|
|
||||||
|
|
||||||
#~ msgid "%s is away."
|
|
||||||
#~ msgstr "%s est absent."
|
|
||||||
|
|
||||||
#~ msgid "%s is busy."
|
|
||||||
#~ msgstr "%s est occupé."
|
|
||||||
|
|
||||||
#~ msgid "Hidden"
|
|
||||||
#~ msgstr "Invisible"
|
|
||||||
|
|
||||||
#~ msgid "Power Off..."
|
|
||||||
#~ msgstr "Éteindre..."
|
|
||||||
|
|
||||||
#~ msgid "Online Accounts"
|
|
||||||
#~ msgstr "Comptes en ligne"
|
|
||||||
|
|
||||||
#~ msgid "Lock Screen"
|
|
||||||
#~ msgstr "Verrouiller l'écran"
|
|
||||||
|
|
||||||
#~ msgid "Log Out..."
|
|
||||||
#~ msgstr "Fermer la session..."
|
|
||||||
|
292
po/hi.po
292
po/hi.po
@ -5,15 +5,16 @@
|
|||||||
#
|
#
|
||||||
# Rajesh <rranjan>, 2011.
|
# Rajesh <rranjan>, 2011.
|
||||||
# rajesh <rajeshkajha@yahoo.com>, 2012.
|
# rajesh <rajeshkajha@yahoo.com>, 2012.
|
||||||
|
# chandankumar <chandankumar.093047@gmail.com>, 2012.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell.master.hi\n"
|
"Project-Id-Version: gnome-shell.master.hi\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: 2012-09-18 10:30+0000\n"
|
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-18 16:02+0530\n"
|
"PO-Revision-Date: 2012-09-25 14:38+0530\n"
|
||||||
"Last-Translator: rajesh <rajeshkajha@yahoo.com>\n"
|
"Last-Translator: rajesh <rajeshkajha@yahoo.com>\n"
|
||||||
"Language-Team: Hindi <Indlinux>\n"
|
"Language-Team: Hindi <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: hi\n"
|
"Language: hi\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"
|
||||||
@ -22,6 +23,22 @@ msgstr ""
|
|||||||
"X-Generator: Lokalize 1.2\n"
|
"X-Generator: Lokalize 1.2\n"
|
||||||
"X-DamnedLies-Scope: partial\n"
|
"X-DamnedLies-Scope: partial\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "स्क्रीनशॉट"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "screencast रिकॉर्ड करें"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "तंत्र"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "संदेश तश्तरी दिखाएँ"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "गनोम शेल"
|
msgstr "गनोम शेल"
|
||||||
@ -39,12 +56,94 @@ msgstr "गनोम शेल एक्सटेंशन वरीयताए
|
|||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "गनोम शेल एक्सटेंशन विन्यस्त करें"
|
msgstr "गनोम शेल एक्सटेंशन विन्यस्त करें"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
|
msgstr ""
|
||||||
|
"Alt-F2 से डेवलपर्स और परीक्षकों के लिए उपयोगी आंतरिक उपकरण को सक्षम करें"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
|
"dialog."
|
||||||
|
msgstr ""
|
||||||
|
"Alt-F2 संवाद का उपयोग करके आंतरिक डिबगिंग और निगरानी उपकरण तक पहुँच पायें."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||||
msgid "Uuids of extensions to enable"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "एक्सटेंशन का Uuid सक्रिय किया जाना है"
|
msgstr "एक्सटेंशन का Uuid सक्रिय किया जाना है"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||||
|
msgid ""
|
||||||
|
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
||||||
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
|
"list. You can also manipulate this list with the EnableExtension and "
|
||||||
|
"DisableExtension DBus methods on org.gnome.Shell."
|
||||||
|
msgstr ""
|
||||||
|
"गनोम शैल एक्सटेंशन का एक uuid गुण है, इस कुंजी एक्सटेंशन जो लोड किया जाना "
|
||||||
|
"चाहिए की सूची "
|
||||||
|
"दिखाता हैं. किसी भी विस्तारक जिसे लोड करने के लिए चाहता है को इस सूची में "
|
||||||
|
"होने की जरूरत "
|
||||||
|
"है. आप भी इस सूची में EnableExtension और DisableExtension डिबस तरीकों के "
|
||||||
|
"साथ org."
|
||||||
|
"gnome.Shell पर हेरफेर कर सकते हैं."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||||
|
msgid "Whether to collect stats about applications usage"
|
||||||
|
msgstr "क्या अनुप्रयोगों के उपयोग के बारे में आँकड़े इकट्ठा करना हैं."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||||
|
msgid ""
|
||||||
|
"The shell normally monitors active applications in order to present the most "
|
||||||
|
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||||
|
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||||
|
"remove already saved data."
|
||||||
|
msgstr ""
|
||||||
|
"सबसे अधिक इस्तेमाल किया जाने वाले सक्रिय अनुप्रयोगों (जैसे लांचरों में ) पर "
|
||||||
|
"शेल सामान्य रूप से "
|
||||||
|
"नज़र रखता है. हालांकि इस डेटा को निजी रखा जाएगा, आप गोपनीयता कारणों के लिए "
|
||||||
|
"इसे अक्षम "
|
||||||
|
"कर सकते हैं. कृपया ध्यान दें कि ऐसा करने से पहले से सहेजे गए डेटा को हटाया "
|
||||||
|
"नहीं जायेगा."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||||
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
|
msgstr "पसंदीदा अनुप्रयोगों के लिए डेस्कटॉप फ़ाइल आईडी की सूची."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
||||||
|
msgid ""
|
||||||
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
|
"favorites area."
|
||||||
|
msgstr ""
|
||||||
|
"इन पहचानकर्ता के लिए अनुप्रयोगों को पसंदीदा क्षेत्र में प्रदर्शित किया जाएगा."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
|
msgid "History for command (Alt-F2) dialog"
|
||||||
|
msgstr "कमांड (Alt-F2) के लिए इतिहास संवाद "
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||||
|
msgid "History for the looking glass dialog"
|
||||||
|
msgstr "ग्लास खोज संवाद के लिए इतिहास"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||||
|
msgid ""
|
||||||
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"स्पष्ट रूप से उपयोगकर्ता द्वारा निर्धारित की गई आंतरिक रूप से पिछले आईएम "
|
||||||
|
"उपस्थिति का "
|
||||||
|
"इस्तेमाल किया किया जाता हैं. यह TpConnectionPresenceType गणन से मान लिया गया "
|
||||||
|
"हैं "
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||||
|
msgid ""
|
||||||
|
"Internally used to store the last session presence status for the user. The "
|
||||||
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"आंतरिक रूप से उपयोगकर्ता के लिए पिछले सत्र उपस्थिति स्थिति को संग्रहीत करने "
|
||||||
|
"के लिए उपयोग "
|
||||||
|
"किया जाता हैं. यह GsmPresenceStatus गणन से मान लिया गया हैं "
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
#| msgid "If true, display the ISO week date in the calendar."
|
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "अगर सही है, पंचांग में सप्ताह संख्या दिखाएँ"
|
msgstr "अगर सही है, पंचांग में सप्ताह संख्या दिखाएँ"
|
||||||
|
|
||||||
@ -52,6 +151,102 @@ msgstr "अगर सही है, पंचांग में सप्ता
|
|||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "अगर सही है, तो पंचांग में ISO सप्ताह तिथि दिखाएँ."
|
msgstr "अगर सही है, तो पंचांग में ISO सप्ताह तिथि दिखाएँ."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||||
|
msgid "Keybinding to open the application menu"
|
||||||
|
msgstr "अनुप्रयोग मेनू को खोलने के लिए कीबाइंडिंग"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
|
msgid "Keybinding to open the application menu."
|
||||||
|
msgstr "अनुप्रयोग मेनू को खोलने के लिए कीबाइंडिंग."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
|
msgid "Keybinding to toggle the visibility of the message tray"
|
||||||
|
msgstr "संदेश ट्रे की दृश्यता को टॉगल करने के लिए कीबाइंडिंग"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
|
msgid "Keybinding to toggle the visibility of the message tray."
|
||||||
|
msgstr "संदेश ट्रे की दृश्यता को टॉगल करने के लिए कीबाइंडिंग."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "स्क्रीन रिकॉर्डर को टॉगल करने के लिए कीबाइंडिंग"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr " निर्मित स्क्रीन रिकॉर्डर को रोकने/शुरू करने के लिए कीबाइंडिंग"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
|
msgid "Which keyboard to use"
|
||||||
|
msgstr "उपयोग करने के लिए कुंजीपटल"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
|
msgid "The type of keyboard to use."
|
||||||
|
msgstr "उपयोग करने के लिए कीबोर्ड के प्रकार"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
|
msgid "Framerate used for recording screencasts."
|
||||||
|
msgstr "screencasts के लिए फ्रेमरेट रिकॉर्डिंग इस्तेमाल किया."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
|
msgid ""
|
||||||
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
|
"screencast recorder in frames-per-second."
|
||||||
|
msgstr ""
|
||||||
|
" गनोम शैल के स्क्रीनकास्ट रिकॉर्डर द्वारा परिणामस्वरूप रिकॉर्ड किये गए "
|
||||||
|
"स्क्रीनकास्ट का "
|
||||||
|
"फ्रेमरेट फ्रेम प्रति सेकंड में."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
|
msgstr "Gstreamer पाइपलाइन स्क्रीनकास्ट एनकोड करने के लिए प्रयोग किया जाता है."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
|
#, no-c-format
|
||||||
|
msgid ""
|
||||||
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
|
"the recorded video is recorded. It will normally have a unconnected source "
|
||||||
|
"pad; output from that pad will be written into the output file. However the "
|
||||||
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
|
msgstr ""
|
||||||
|
"रिकॉर्डिंग को इनकोड करने के लिए GStreamer पाइपलाइन सेट करें. पाइपलाइन के पास "
|
||||||
|
"एक "
|
||||||
|
"असंबद्ध सिंक पैड है जहाँ रिकॉर्ड की गई वीडियो दर्ज की गई है.यह सामान्य रूप से "
|
||||||
|
"एक असंबद्ध "
|
||||||
|
"स्रोत पैड होगा, इस पैड के उत्पादन को आउटपुट फाइल में लिखा जाएगा. लेकिन पाइप "
|
||||||
|
"लाइन भी "
|
||||||
|
"अपने स्वयं केआउटपुट की देखभाल ले सकते हैं- इस shout2send या इसी तरह के "
|
||||||
|
"माध्यम से एक "
|
||||||
|
"Icecast सर्वर से आउटपुट को भेजने के लिए इस्तेमाल किया जा सकता है. रिक्त मान "
|
||||||
|
"को "
|
||||||
|
"निर्धारित या अनिर्धारित करने के दौरान, डिफ़ॉल्ट पाइपलाइन का इस्तेमाल किया "
|
||||||
|
"जाएगा. VP8 "
|
||||||
|
"कोडेक का उपयोग करके को WEBM रिकॉर्ड कर सकते हैं और यह वर्त्तमान में 'vp8enc "
|
||||||
|
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||||
|
"queue ! webmmux' हैं. %T सिस्टम पर इष्टतम धागा गिनती में एक अनुमान के लिए एक "
|
||||||
|
"प्लेसहोल्डर के रूप में प्रयोग किया जाता है."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
|
msgid "File extension used for storing the screencast"
|
||||||
|
msgstr " स्क्रीनकास्ट के भंडारण के लिए इस्तेमाल किया जाने वाला फ़ाइल एक्सटेंशन"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
|
msgid ""
|
||||||
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
|
"a different container format."
|
||||||
|
msgstr ""
|
||||||
|
"रिकॉर्ड किये गए स्क्रीनकास्ट के लिए फ़ाइल का नाम अद्वितीय वर्तमान दिनांक के "
|
||||||
|
"आधार पर "
|
||||||
|
"फ़ाइलनाम होगा और इस विस्तारक का उपयोग करेगा. एक अलग कंटेनर प्रारूप के साथ "
|
||||||
|
"रिकॉर्डिंग "
|
||||||
|
"करने के दौरान बदला जाना चाहिए."
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:124
|
#: ../js/extensionPrefs/main.js:124
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
@ -66,7 +261,7 @@ msgid "Select an extension to configure using the combobox above."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"उपर्युक्त कोंबोबॉक्स के उपयोग को विन्यस्त करने के लिए किसी विस्तार को चुनें."
|
"उपर्युक्त कोंबोबॉक्स के उपयोग को विन्यस्त करने के लिए किसी विस्तार को चुनें."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:527
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "सत्र..."
|
msgstr "सत्र..."
|
||||||
|
|
||||||
@ -85,7 +280,7 @@ msgstr "सूचीबद्ध नहीं?"
|
|||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:137
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "रद्द करें"
|
msgstr "रद्द करें"
|
||||||
|
|
||||||
@ -98,27 +293,37 @@ msgstr "साइन इन"
|
|||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "लॉगिन विंडो"
|
msgstr "लॉगिन विंडो"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:772
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
#| msgid "Power Off"
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "पावर"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||||
|
#: ../js/ui/userMenu.js:778
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "स्थगित"
|
msgstr "स्थगित"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "फिर आरंभ करें"
|
msgstr "फिर आरंभ करें"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||||
#: ../js/ui/userMenu.js:771
|
#: ../js/ui/userMenu.js:777
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "बिजली बंद"
|
msgstr "बंद करें"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "प्रमाणीकरण त्रुटि"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(या स्वाइप फिंगर)"
|
msgstr "(या स्वाइप फिंगर)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(उदाहरण के लिए, उपयोक्ता या %s)"
|
msgstr "(उदाहरण के लिए, उपयोक्ता या %s)"
|
||||||
@ -760,12 +965,12 @@ msgstr "लॉग आउट"
|
|||||||
#: ../js/ui/endSessionDialog.js:81
|
#: ../js/ui/endSessionDialog.js:81
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "बिजली बंद"
|
msgstr "बंद करें"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:82
|
#: ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Click Power Off to quit these applications and power off the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"इन अनुप्रयोगों से बाहर निकलने या तंत्र को बंद करने के लिए बिजली बंद करें पर "
|
"इन अनुप्रयोगों से बाहर निकलने या तंत्र की बिजली बंद करने के लिए बंद करें पर "
|
||||||
"क्लिक करें."
|
"क्लिक करें."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:84
|
||||||
@ -787,7 +992,7 @@ msgstr "फिर आरंभ करें"
|
|||||||
#: ../js/ui/endSessionDialog.js:92
|
#: ../js/ui/endSessionDialog.js:92
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "बिजली बंद"
|
msgstr "बंद करें"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:98
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
@ -824,7 +1029,7 @@ msgstr "'%s' को extensions.gnome.org से डाउनलोड कर स
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "तश्तरी"
|
msgstr "तश्तरी"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "कुंजीपटल"
|
msgstr "कुंजीपटल"
|
||||||
@ -885,11 +1090,11 @@ msgstr "खोलें"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "हटाएँ"
|
msgstr "हटाएँ"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2041
|
#: ../js/ui/messageTray.js:2055
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "संदेश तश्तरी"
|
msgstr "संदेश तश्तरी"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2483
|
#: ../js/ui/messageTray.js:2511
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "तंत्र जानकारी"
|
msgstr "तंत्र जानकारी"
|
||||||
|
|
||||||
@ -949,18 +1154,18 @@ msgstr "कृपया कमांड दर्ज करें:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %B %d"
|
msgstr "%A, %B %d"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
msgstr[0] "%d नया संदेश"
|
msgstr[0] "%d नया संदेश"
|
||||||
msgstr[1] "%d नए संदेश"
|
msgstr[1] "%d नए संदेश"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -999,7 +1204,7 @@ msgstr "कूटशब्द:"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "कूटशब्द याद रखें"
|
msgstr "कूटशब्द याद रखें"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:140
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "ताला खोलें"
|
msgstr "ताला खोलें"
|
||||||
|
|
||||||
@ -1176,11 +1381,11 @@ msgstr "कृपया युक्ति पर वर्णित पिन
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "ठीक"
|
msgstr "ठीक"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "कुंजीपट लेआउट दिखाएँ"
|
msgstr "कुंजीपट लेआउट दिखाएँ"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "क्षेत्र और भाषा सेटिंग्स"
|
msgstr "क्षेत्र और भाषा सेटिंग्स"
|
||||||
|
|
||||||
@ -1411,67 +1616,67 @@ msgstr "आवाज़"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "माइक्रोफोन"
|
msgstr "माइक्रोफोन"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:147
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "बतौर अन्य उपयोक्ता लॉगिन करें"
|
msgstr "बतौर अन्य उपयोक्ता लॉगिन करें"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "उपलब्ध"
|
msgstr "उपलब्ध"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "व्यस्त"
|
msgstr "व्यस्त"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "अदृश्य"
|
msgstr "अदृश्य"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "दूर"
|
msgstr "दूर"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "निष्क्रिय"
|
msgstr "निष्क्रिय"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "अनुपलब्ध"
|
msgstr "अनुपलब्ध"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
|
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "उपयोक्ता बदलें"
|
msgstr "उपयोक्ता बदलें"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "Switch Session"
|
msgid "Switch Session"
|
||||||
msgstr "सत्र बदलें"
|
msgstr "सत्र बदलें"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:737
|
#: ../js/ui/userMenu.js:743
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "अधिसूचना"
|
msgstr "अधिसूचना"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:745
|
#: ../js/ui/userMenu.js:751
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "तंत्र विन्यास"
|
msgstr "तंत्र विन्यास"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:758
|
#: ../js/ui/userMenu.js:764
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "लॉग आउट"
|
msgstr "लॉग आउट"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:763
|
#: ../js/ui/userMenu.js:769
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "तालाबंद"
|
msgstr "तालाबंद"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:778
|
#: ../js/ui/userMenu.js:784
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "अद्यतन संस्थापित करें और फिर आरंभ करें"
|
msgstr "अद्यतन संस्थापित करें और फिर आरंभ करें"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:796
|
#: ../js/ui/userMenu.js:802
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "आपकी चैट स्थिति व्यस्त नियत की जाएगी"
|
msgstr "आपकी चैट स्थिति व्यस्त नियत की जाएगी"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:803
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1674,9 +1879,6 @@ msgstr "सत्यापन संवाद को उपयोक्ता
|
|||||||
#~ msgid "Home Folder"
|
#~ msgid "Home Folder"
|
||||||
#~ msgstr "घर फ़ोल्डर"
|
#~ msgstr "घर फ़ोल्डर"
|
||||||
|
|
||||||
#~ msgid "File System"
|
|
||||||
#~ msgstr "फ़ाइल सिस्टम"
|
|
||||||
|
|
||||||
#~ msgid "%1$s: %2$s"
|
#~ msgid "%1$s: %2$s"
|
||||||
#~ msgstr "%1$s: %2$s"
|
#~ msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
122
po/hu.po
122
po/hu.po
@ -8,8 +8,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-09-17 23:19+0200\n"
|
"POT-Creation-Date: 2012-09-26 16:11+0200\n"
|
||||||
"PO-Revision-Date: 2012-09-17 23:20+0200\n"
|
"PO-Revision-Date: 2012-09-26 16:12+0200\n"
|
||||||
"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
|
"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
|
||||||
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
@ -19,6 +19,22 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: KBabel 1.11.4\n"
|
"X-Generator: KBabel 1.11.4\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "Képernyőképek"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "Képernyővideó felvétele"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Rendszer"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "Üzenettálca megjelenítése"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell"
|
||||||
@ -197,7 +213,10 @@ msgstr ""
|
|||||||
"adatcsatorna is kezelheti a saját kimenetét – ennek segítségével a kimenet "
|
"adatcsatorna is kezelheti a saját kimenetét – ennek segítségével a kimenet "
|
||||||
"elküldhető egy icecast kiszolgálóra a shout2send vagy hasonló segítségével. "
|
"elküldhető egy icecast kiszolgálóra a shout2send vagy hasonló segítségével. "
|
||||||
"Ha nincs beállítva, vagy üres értékre van állítva, akkor az alapértelmezett "
|
"Ha nincs beállítva, vagy üres értékre van állítva, akkor az alapértelmezett "
|
||||||
"adatcsatorna kerül felhasználásra. Ez jelenleg: „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux” és WEBM formátumba rögzít a VP8 kodek használatával. A %T egy helykitöltő, a rendszeren optimális szálmennyiség megtippelésére."
|
"adatcsatorna kerül felhasználásra. Ez jelenleg: „vp8enc min_quantizer=13 "
|
||||||
|
"max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux” "
|
||||||
|
"és WEBM formátumba rögzít a VP8 kodek használatával. A %T egy helykitöltő, a "
|
||||||
|
"rendszeren optimális szálmennyiség megtippelésére."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
@ -226,11 +245,11 @@ msgstr "Kiterjesztés"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "Válasszon egy beállítandó kiterjesztést a fenti legördülő menüből."
|
msgstr "Válasszon egy beállítandó kiterjesztést a fenti legördülő menüből."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:528
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Munkamenet…"
|
msgstr "Munkamenet…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:676
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Bejelentkezés"
|
msgstr "Bejelentkezés"
|
||||||
@ -238,47 +257,56 @@ msgstr "Bejelentkezés"
|
|||||||
#. 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:742
|
#: ../js/gdm/loginDialog.js:743
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Nincs a listán?"
|
msgstr "Nincs a listán?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:137
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Mégse"
|
msgstr "Mégse"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:901
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Bejelentkezés"
|
msgstr "Bejelentkezés"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1240
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Bejelentkezési ablak"
|
msgstr "Bejelentkezési ablak"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:772
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Kikapcsolás"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||||
|
#: ../js/ui/userMenu.js:778
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Felfüggesztés"
|
msgstr "Felfüggesztés"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Újraindítás"
|
msgstr "Újraindítás"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||||
#: ../js/ui/userMenu.js:771
|
#: ../js/ui/userMenu.js:777
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Kikapcsolás"
|
msgstr "Kikapcsolás"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "Hitelesítési hiba"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(vagy húzza le az ujját)"
|
msgstr "(vagy húzza le az ujját)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(például: felhasználó vagy %s)"
|
msgstr "(például: felhasználó vagy %s)"
|
||||||
@ -979,11 +1007,11 @@ msgstr "Telepítés"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
|
msgstr "Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "tálca"
|
msgstr "tálca"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Billentyűzet"
|
msgstr "Billentyűzet"
|
||||||
@ -1036,19 +1064,19 @@ msgstr "Forrás megtekintése"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Weblap"
|
msgstr "Weblap"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1080
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Megnyitás"
|
msgstr "Megnyitás"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1087
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Eltávolítás"
|
msgstr "Eltávolítás"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2041
|
#: ../js/ui/messageTray.js:2088
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Üzenettálca"
|
msgstr "Üzenettálca"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2483
|
#: ../js/ui/messageTray.js:2551
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Rendszerinformációk"
|
msgstr "Rendszerinformációk"
|
||||||
|
|
||||||
@ -1109,18 +1137,18 @@ msgstr "Adjon meg egy parancsot:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %B %d."
|
msgstr "%A, %B %d."
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
msgstr[0] "%d új üzenet"
|
msgstr[0] "%d új üzenet"
|
||||||
msgstr[1] "%d új üzenet"
|
msgstr[1] "%d új üzenet"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -1159,7 +1187,7 @@ msgstr "Jelszó"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Jelszó megjegyzése"
|
msgstr "Jelszó megjegyzése"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:140
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Feloldás"
|
msgstr "Feloldás"
|
||||||
|
|
||||||
@ -1277,7 +1305,7 @@ msgstr "Billentyűzetbeállítások"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Egérbeállítások"
|
msgstr "Egérbeállítások"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Hangbeállítások"
|
msgstr "Hangbeállítások"
|
||||||
|
|
||||||
@ -1335,11 +1363,11 @@ msgstr "Adja meg az eszközön említett PIN-kódot."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Billentyűzetkiosztás megjelenítése"
|
msgstr "Billentyűzetkiosztás megjelenítése"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Területi és nyelvi beállítások"
|
msgstr "Területi és nyelvi beállítások"
|
||||||
|
|
||||||
@ -1562,7 +1590,7 @@ msgid "Unknown"
|
|||||||
msgstr "Ismeretlen"
|
msgstr "Ismeretlen"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Hangerő"
|
msgstr "Hangerő"
|
||||||
|
|
||||||
@ -1570,67 +1598,67 @@ msgstr "Hangerő"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofon"
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:147
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Bejelentkezés másik felhasználóként"
|
msgstr "Bejelentkezés másik felhasználóként"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Elérhető"
|
msgstr "Elérhető"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Elfoglalt"
|
msgstr "Elfoglalt"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Láthatatlan"
|
msgstr "Láthatatlan"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Távol"
|
msgstr "Távol"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Ráér"
|
msgstr "Ráér"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Nem érhető el"
|
msgstr "Nem érhető el"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
|
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Felhasználóváltás"
|
msgstr "Felhasználóváltás"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "Switch Session"
|
msgid "Switch Session"
|
||||||
msgstr "Felhasználóváltás"
|
msgstr "Felhasználóváltás"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:737
|
#: ../js/ui/userMenu.js:743
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Értesítések"
|
msgstr "Értesítések"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:745
|
#: ../js/ui/userMenu.js:751
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Rendszerbeállítások"
|
msgstr "Rendszerbeállítások"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:758
|
#: ../js/ui/userMenu.js:764
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Kijelentkezés"
|
msgstr "Kijelentkezés"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:763
|
#: ../js/ui/userMenu.js:769
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Lezárás"
|
msgstr "Lezárás"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:778
|
#: ../js/ui/userMenu.js:784
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "Frissítések telepítése és újraindítás"
|
msgstr "Frissítések telepítése és újraindítás"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:796
|
#: ../js/ui/userMenu.js:802
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Csevegési állapota elfoglaltra lesz állítva"
|
msgstr "Csevegési állapota elfoglaltra lesz állítva"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:803
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
|
189
po/id.po
189
po/id.po
@ -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: 2012-09-19 10:06+0000\n"
|
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-19 17:32+0700\n"
|
"PO-Revision-Date: 2012-10-16 07:11+0700\n"
|
||||||
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
||||||
"Language-Team: Indonesian <gnome@i15n.org>\n"
|
"Language-Team: Indonesian <gnome@i15n.org>\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.5.3\n"
|
"X-Generator: Poedit 1.5.4\n"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
msgid "Screenshots"
|
msgid "Screenshots"
|
||||||
@ -31,15 +31,21 @@ msgid "Record a screencast"
|
|||||||
msgstr "Rekam suatu rekaman layar"
|
msgstr "Rekam suatu rekaman layar"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
#| msgid "System Sounds"
|
|
||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Sistem"
|
msgstr "Sistem"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
#| msgid "Message Tray"
|
|
||||||
msgid "Show the message tray"
|
msgid "Show the message tray"
|
||||||
msgstr "Tampilkan baki pesan"
|
msgstr "Tampilkan baki pesan"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||||
|
msgid "Show all applications"
|
||||||
|
msgstr "Tampilkan semua aplikasi"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||||
|
msgid "Open the application menu"
|
||||||
|
msgstr "Buka menu aplikasi"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell"
|
||||||
@ -157,34 +163,45 @@ msgid "Keybinding to open the application menu."
|
|||||||
msgstr "Kombinasi tombol untuk membuka menu aplikasi."
|
msgstr "Kombinasi tombol untuk membuka menu aplikasi."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
|
msgstr "Kombinasi tombol untuk membuka tilikan \"Tampilkan Aplikasi\""
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
|
msgid ""
|
||||||
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
|
msgstr ""
|
||||||
|
"Kombinasi tombol untuk membuka tilikan Ringkasan Aktivitas \"Tampilkan "
|
||||||
|
"Aplikasi\"."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "Keybinding to toggle the visibility of the message tray"
|
msgid "Keybinding to toggle the visibility of the message tray"
|
||||||
msgstr "Kombinasi tombol untuk kenampakan baki pesan"
|
msgstr "Kombinasi tombol untuk kenampakan baki pesan"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to toggle the visibility of the message tray."
|
msgid "Keybinding to toggle the visibility of the message tray."
|
||||||
msgstr "Kombinasi tombol untuk kenampakan baki pesan."
|
msgstr "Kombinasi tombol untuk kenampakan baki pesan."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to toggle the screen recorder"
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
msgstr "Kombinasi tombol untuk perekaman layar"
|
msgstr "Kombinasi tombol untuk perekaman layar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
msgstr "Kombinasi tombol mulai/menghentikan perekam layar bawaan."
|
msgstr "Kombinasi tombol mulai/menghentikan perekam layar bawaan."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Papan tik mana yang akan dipakai"
|
msgstr "Papan tik mana yang akan dipakai"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "Jenis papan tik yang akan dipakai."
|
msgstr "Jenis papan tik yang akan dipakai."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Laju gambar untuk menyimpan tangkapan layar."
|
msgstr "Laju gambar untuk menyimpan tangkapan layar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -192,11 +209,11 @@ msgstr ""
|
|||||||
"Laju frame dari hasil screencast yang direkam oleh perekam screencast GNOME "
|
"Laju frame dari hasil screencast yang direkam oleh perekam screencast GNOME "
|
||||||
"Shell dalam frame per detik."
|
"Shell dalam frame per detik."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "Jalur pipa gstreamer yang dipakai untuk mengode screencast"
|
msgstr "Jalur pipa gstreamer yang dipakai untuk mengode screencast"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -222,11 +239,11 @@ msgstr ""
|
|||||||
"dan merekam ke WEBM memakai kodek VP8. %T digunakan sebagai pewakil untuk "
|
"dan merekam ke WEBM memakai kodek VP8. %T digunakan sebagai pewakil untuk "
|
||||||
"perkiraan jumlah thread optimal pada sistem."
|
"perkiraan jumlah thread optimal pada sistem."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Ekstensi berkas untuk menyimpan tangkapan layar"
|
msgstr "Ekstensi berkas untuk menyimpan tangkapan layar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -249,15 +266,11 @@ msgstr "Ekstensi"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas."
|
msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:529
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sesi..."
|
msgstr "Sesi..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:653
|
#: ../js/gdm/loginDialog.js:677
|
||||||
msgid "Configuration problem: Could not connect to GDM"
|
|
||||||
msgstr "Masalah konfigurasi: Tak bisa menyambung ke GDM"
|
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:679
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Masuk"
|
msgstr "Masuk"
|
||||||
@ -265,42 +278,46 @@ msgstr "Masuk"
|
|||||||
#. 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:746
|
#: ../js/gdm/loginDialog.js:736
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Tak masuk daftar?"
|
msgstr "Tak masuk daftar?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:899 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:172
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Batal"
|
msgstr "Batal"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:904
|
#: ../js/gdm/loginDialog.js:894
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Masuk"
|
msgstr "Masuk"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1243
|
#: ../js/gdm/loginDialog.js:1215
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Jendela Log Masuk"
|
msgstr "Jendela Log Masuk"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:773
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Daya"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||||
|
#: ../js/ui/userMenu.js:775
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspensi"
|
msgstr "Suspensi"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Nyalakan Ulang"
|
msgstr "Nyalakan Ulang"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:772
|
#: ../js/ui/userMenu.js:774
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Matikan"
|
msgstr "Matikan"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:148
|
#: ../js/gdm/util.js:148
|
||||||
#| msgid "Authentication Required"
|
|
||||||
msgid "Authentication error"
|
msgid "Authentication error"
|
||||||
msgstr "Galat otentikasi"
|
msgstr "Galat otentikasi"
|
||||||
|
|
||||||
@ -347,7 +364,7 @@ msgstr "PENGATURAN"
|
|||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Jendela Baru"
|
msgstr "Jendela Baru"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Hapus dari Favorit"
|
msgstr "Hapus dari Favorit"
|
||||||
|
|
||||||
@ -511,16 +528,16 @@ msgstr "Minggu ini"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Minggu depan"
|
msgstr "Minggu depan"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:278
|
#: ../js/ui/components/autorunManager.js:297
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "Perangkat Yang Dapat Dicabut"
|
msgstr "Perangkat Yang Dapat Dicabut"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:575
|
#: ../js/ui/components/autorunManager.js:594
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Buka dengan %s"
|
msgstr "Buka dengan %s"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:601
|
#: ../js/ui/components/autorunManager.js:620
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Keluarkan"
|
msgstr "Keluarkan"
|
||||||
|
|
||||||
@ -892,7 +909,7 @@ msgstr "Sunting Akun"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Alasan yang tidak diketahui"
|
msgstr "Alasan yang tidak diketahui"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Tampilkan Aplikasi"
|
msgstr "Tampilkan Aplikasi"
|
||||||
|
|
||||||
@ -900,14 +917,14 @@ msgstr "Tampilkan Aplikasi"
|
|||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Pengaturan Waktu dan Tanggal"
|
msgstr "Pengaturan Waktu dan Tanggal"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:109
|
#: ../js/ui/dateMenu.js:111
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Buka Kalender"
|
msgstr "Buka Kalender"
|
||||||
|
|
||||||
#. 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:175
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %e %B %Y"
|
msgstr "%A, %e %B %Y"
|
||||||
|
|
||||||
@ -1006,11 +1023,11 @@ 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:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "baki"
|
msgstr "baki"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Papan Ketik"
|
msgstr "Papan Ketik"
|
||||||
@ -1063,19 +1080,19 @@ msgstr "Tilik Sumber"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Halaman Web"
|
msgstr "Halaman Web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1080
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Buka"
|
msgstr "Buka"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1087
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Hapus"
|
msgstr "Hapus"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2052
|
#: ../js/ui/messageTray.js:1540
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Baki Pesan"
|
msgstr "Baki Pesan"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2508
|
#: ../js/ui/messageTray.js:2547
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informasi Sistem"
|
msgstr "Informasi Sistem"
|
||||||
|
|
||||||
@ -1140,13 +1157,13 @@ msgstr "Ketikkan perintah:"
|
|||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d %B"
|
msgstr "%A, %d %B"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:144
|
#: ../js/ui/screenShield.js:143
|
||||||
#, c-format
|
#, c-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/screenShield.js:146
|
#: ../js/ui/screenShield.js:145
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -1184,7 +1201,7 @@ msgstr "Sandi"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Ingat Sandi"
|
msgstr "Ingat Sandi"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:175
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Buka Kunci"
|
msgstr "Buka Kunci"
|
||||||
|
|
||||||
@ -1302,7 +1319,7 @@ msgstr "Pengaturan Papan Ketik"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Pengaturan Tetikus"
|
msgstr "Pengaturan Tetikus"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Pengaturan Suara"
|
msgstr "Pengaturan Suara"
|
||||||
|
|
||||||
@ -1360,11 +1377,11 @@ msgstr "Ketikkan PIN yang disebutkan oleh perangkat."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Oke"
|
msgstr "Oke"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:227
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Tampilkan Tata Letak Papan Tik"
|
msgstr "Tampilkan Tata Letak Papan Tik"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:232
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Pengaturan Bahasa dan Wilayah"
|
msgstr "Pengaturan Bahasa dan Wilayah"
|
||||||
|
|
||||||
@ -1583,7 +1600,7 @@ msgid "Unknown"
|
|||||||
msgstr "Tak Dikenal"
|
msgstr "Tak Dikenal"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volume"
|
msgstr "Volume"
|
||||||
|
|
||||||
@ -1591,72 +1608,63 @@ msgstr "Volume"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofon"
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:137
|
#: ../js/ui/unlockDialog.js:177
|
||||||
msgid "Could not connect to GDM. Screen locking was automatically disabled."
|
|
||||||
msgstr ""
|
|
||||||
"Tak bisa menyambung ke GDM. Penguncian layar dimatikan secara otomatis."
|
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:182
|
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Masuk sebagai pengguna lain"
|
msgstr "Masuk sebagai pengguna lain"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:175
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Ada"
|
msgstr "Ada"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:178
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Sibuk"
|
msgstr "Sibuk"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:181
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Tak Terlihat"
|
msgstr "Tak Terlihat"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:184
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Pergi"
|
msgstr "Pergi"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:187
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Menganggur"
|
msgstr "Menganggur"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:190
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Tak tersedia"
|
msgstr "Tak tersedia"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
#: ../js/ui/userMenu.js:740
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "Ganti Pengguna"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:614
|
|
||||||
msgid "Switch Session"
|
|
||||||
msgstr "Pindah Sesi"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:738
|
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Pemberitahuan"
|
msgstr "Pemberitahuan"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:746
|
#: ../js/ui/userMenu.js:748
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Pengaturan Sistem"
|
msgstr "Pengaturan Sistem"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:759
|
#: ../js/ui/userMenu.js:756
|
||||||
|
msgid "Switch User"
|
||||||
|
msgstr "Ganti Pengguna"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:761
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Keluar"
|
msgstr "Keluar"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:764
|
#: ../js/ui/userMenu.js:766
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Kunci"
|
msgstr "Kunci"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:779
|
#: ../js/ui/userMenu.js:781
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "Pasang Pemutakhiran & Jalankan Ulang"
|
msgstr "Pasang Pemutakhiran & Jalankan Ulang"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:799
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Status obrolan Anda akan ditata ke sibuk"
|
msgstr "Status obrolan Anda akan ditata ke sibuk"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:798
|
#: ../js/ui/userMenu.js:800
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1665,19 +1673,19 @@ msgstr ""
|
|||||||
"telah disesuaikan untuk memberitahu pihak lain bahwa Anda mungkin tak "
|
"telah disesuaikan untuk memberitahu pihak lain bahwa Anda mungkin tak "
|
||||||
"melihat pesan mereka."
|
"melihat pesan mereka."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:85
|
#: ../js/ui/viewSelector.js:87
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Jendela"
|
msgstr "Jendela"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:89
|
#: ../js/ui/viewSelector.js:91
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplikasi"
|
msgstr "Aplikasi"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:93
|
#: ../js/ui/viewSelector.js:95
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Cari"
|
msgstr "Cari"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:119
|
#: ../js/ui/wanda.js:117
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1686,12 +1694,12 @@ msgstr ""
|
|||||||
"Maaf, tidak ada kata-kata bijak bagi Anda hari ini:\n"
|
"Maaf, tidak ada kata-kata bijak bagi Anda hari ini:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "%s sang Peramal berkata"
|
msgstr "%s sang Peramal berkata"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:164
|
#: ../js/ui/wanda.js:162
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Easter Egg kesukaan Anda"
|
msgstr "Easter Egg kesukaan Anda"
|
||||||
|
|
||||||
@ -1724,19 +1732,19 @@ msgstr[0] "%u Masukan"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Suara Sistem"
|
msgstr "Suara Sistem"
|
||||||
|
|
||||||
#: ../src/main.c:330
|
#: ../src/main.c:332
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Versi Cetak"
|
msgstr "Versi Cetak"
|
||||||
|
|
||||||
#: ../src/main.c:336
|
#: ../src/main.c:338
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Mode yang dipakai oleh layar log masuk GDM"
|
msgstr "Mode yang dipakai oleh layar log masuk GDM"
|
||||||
|
|
||||||
#: ../src/main.c:342
|
#: ../src/main.c:344
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
|
msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
|
||||||
|
|
||||||
#: ../src/main.c:348
|
#: ../src/main.c:350
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Menampilkan mode yang mungkin"
|
msgstr "Menampilkan mode yang mungkin"
|
||||||
|
|
||||||
@ -1764,3 +1772,4 @@ msgstr "Baku"
|
|||||||
#: ../src/shell-polkit-authentication-agent.c:343
|
#: ../src/shell-polkit-authentication-agent.c:343
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Dialog otentikasi ditolak oleh pengguna"
|
msgstr "Dialog otentikasi ditolak oleh pengguna"
|
||||||
|
|
||||||
|
417
po/ko.po
417
po/ko.po
@ -13,8 +13,8 @@ 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: 2012-09-07 18:55+0000\n"
|
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
|
||||||
"PO-Revision-Date: 2012-09-09 07:25+0900\n"
|
"PO-Revision-Date: 2012-10-13 18:55+0900\n"
|
||||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||||
"Language: Korean\n"
|
"Language: Korean\n"
|
||||||
@ -23,6 +23,23 @@ 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"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "스크린샷"
|
||||||
|
|
||||||
|
# 스크린샷 동영상 녹화 기능임
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "스크린샷 녹화"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "시스템"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "메시지 트레이 표시"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "그놈 셸"
|
msgstr "그놈 셸"
|
||||||
@ -180,9 +197,9 @@ msgid ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
"thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"녹화 인코딩에 사용할 GStreamer 파이프라인을 지정합니다. gst-launch 프로그램"
|
"녹화 인코딩에 사용할 GStreamer 파이프라인을 지정합니다. gst-launch 프로그램"
|
||||||
"에 사용하는 문법을 따릅니다. 녹화한 영상이 입력되는 싱크 패드는 이 파이프라인"
|
"에 사용하는 문법을 따릅니다. 녹화한 영상이 입력되는 싱크 패드는 이 파이프라인"
|
||||||
@ -190,9 +207,10 @@ msgstr ""
|
|||||||
"의 출력을 출력 파일에 기록합니다. 하지만 파이프라인에서 이 출력을 처리할 수"
|
"의 출력을 출력 파일에 기록합니다. 하지만 파이프라인에서 이 출력을 처리할 수"
|
||||||
"도 있습니다. shout2send 같은 프로그램을 이용해 아이스캐스트 서버로 출력을 보"
|
"도 있습니다. shout2send 같은 프로그램을 이용해 아이스캐스트 서버로 출력을 보"
|
||||||
"내거나 하는 용도로 사용할 수 있습니다. 설정을 취소하거나 빈 값으로 설정하면, "
|
"내거나 하는 용도로 사용할 수 있습니다. 설정을 취소하거나 빈 값으로 설정하면, "
|
||||||
"기본 파이프라인을 사용합니다. 기본 파이프라인은 'vp8enc quality=8 speed=6 "
|
"기본 파이프라인을 사용합니다. 기본 파이프라인은 'vp8enc min_quantizer=13 "
|
||||||
"threads=%T ! queue ! webmmux'이고 VP8 코덱을 사용해 WEBM 형식으로 녹화합니"
|
"max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'이"
|
||||||
"다. '%T' 기호는 시스템에서 최적으로 생각되는 스레드 수로 대체됩니다."
|
"고 VP8 코덱을 사용해 WEBM 형식으로 녹화합니다. '%T' 기호는 시스템에서 최적으"
|
||||||
|
"로 생각되는 스레드 수로 대체됩니다."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
@ -220,11 +238,11 @@ msgstr "확장"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "위의 콤보상자를 사용해 설정할 확장을 선택하십시오."
|
msgstr "위의 콤보상자를 사용해 설정할 확장을 선택하십시오."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:528
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "세션..."
|
msgstr "세션..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:676
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "로그인"
|
msgstr "로그인"
|
||||||
@ -232,47 +250,56 @@ msgstr "로그인"
|
|||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:742
|
#: ../js/gdm/loginDialog.js:743
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "목록에 없습니까?"
|
msgstr "목록에 없습니까?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:135
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "취소"
|
msgstr "취소"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:901
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "로그인"
|
msgstr "로그인"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1240
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "로그인 창"
|
msgstr "로그인 창"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:655 ../js/ui/userMenu.js:659
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:770
|
#: ../js/gdm/powerMenu.js:35
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "전원"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||||
|
#: ../js/ui/userMenu.js:775
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "절전"
|
msgstr "절전"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "다시 시작"
|
msgstr "다시 시작"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:659
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||||
#: ../js/ui/userMenu.js:769
|
#: ../js/ui/userMenu.js:774
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "컴퓨터 끄기"
|
msgstr "컴퓨터 끄기"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "인증 오류"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(또는 지문을 문지르십시오)"
|
msgstr "(또는 지문을 문지르십시오)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(예를 들어, 사용자 또는 %s)"
|
msgstr "(예를 들어, 사용자 또는 %s)"
|
||||||
@ -473,16 +500,16 @@ msgstr "이번주"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "다음주"
|
msgstr "다음주"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:278
|
#: ../js/ui/components/autorunManager.js:297
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "이동식 장치"
|
msgstr "이동식 장치"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:571
|
#: ../js/ui/components/autorunManager.js:594
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "%s 프로그램으로 열기"
|
msgstr "%s 프로그램으로 열기"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:597
|
#: ../js/ui/components/autorunManager.js:620
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "꺼내기"
|
msgstr "꺼내기"
|
||||||
|
|
||||||
@ -627,38 +654,46 @@ msgstr "가입 요청"
|
|||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "연결 오류"
|
msgstr "연결 오류"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Unmute"
|
||||||
|
msgstr "음소거 해제"
|
||||||
|
|
||||||
|
#: ../js/ui/components/telepathyClient.js:491
|
||||||
|
msgid "Mute"
|
||||||
|
msgstr "음소거"
|
||||||
|
|
||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/components/telepathyClient.js:934
|
#: ../js/ui/components/telepathyClient.js:948
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "보낸 때: <b>%A</b> <b>%H시 %M분</b>"
|
msgstr "보낸 때: <b>%A</b> <b>%H시 %M분</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/components/telepathyClient.js:940
|
#: ../js/ui/components/telepathyClient.js:954
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "보낸 때: <b>%B %d일</b> <b>%A</b>"
|
msgstr "보낸 때: <b>%B %d일</b> <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/components/telepathyClient.js:945
|
#: ../js/ui/components/telepathyClient.js:959
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "보낸 때: %Y년 <b>%B %d일</b> <b>%A</b>"
|
msgstr "보낸 때: %Y년 <b>%B %d일</b> <b>%A</b>"
|
||||||
|
|
||||||
#. 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:974
|
#: ../js/ui/components/telepathyClient.js:988
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s의 대화명이 이제 %s입니다"
|
msgstr "%s의 대화명이 이제 %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:1074
|
#: ../js/ui/components/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "%s에 초대"
|
msgstr "%s에 초대"
|
||||||
@ -666,42 +701,42 @@ msgstr "%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:1082
|
#: ../js/ui/components/telepathyClient.js:1096
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s 님이 %s에 입장하도록 초대합니다"
|
msgstr "%s 님이 %s에 입장하도록 초대합니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1084
|
#: ../js/ui/components/telepathyClient.js:1098
|
||||||
#: ../js/ui/components/telepathyClient.js:1163
|
#: ../js/ui/components/telepathyClient.js:1177
|
||||||
#: ../js/ui/components/telepathyClient.js:1226
|
#: ../js/ui/components/telepathyClient.js:1240
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "거부"
|
msgstr "거부"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1085
|
#: ../js/ui/components/telepathyClient.js:1099
|
||||||
#: ../js/ui/components/telepathyClient.js:1164
|
#: ../js/ui/components/telepathyClient.js:1178
|
||||||
#: ../js/ui/components/telepathyClient.js:1227
|
#: ../js/ui/components/telepathyClient.js:1241
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "허용"
|
msgstr "허용"
|
||||||
|
|
||||||
#. 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:1115
|
#: ../js/ui/components/telepathyClient.js:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "%s에서 영상 호출"
|
msgstr "%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:1118
|
#: ../js/ui/components/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "%s에서 호출"
|
msgstr "%s에서 호출"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1123
|
#: ../js/ui/components/telepathyClient.js:1137
|
||||||
#: ../js/ui/status/bluetooth.js:346
|
#: ../js/ui/status/bluetooth.js:346
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "거부"
|
msgstr "거부"
|
||||||
|
|
||||||
#. 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:1125
|
#: ../js/ui/components/telepathyClient.js:1139
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "응답"
|
msgstr "응답"
|
||||||
|
|
||||||
@ -710,108 +745,108 @@ msgstr "응답"
|
|||||||
#. * 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:1157
|
#: ../js/ui/components/telepathyClient.js:1171
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s님이 %s 파일을 보냅니다"
|
msgstr "%s님이 %s 파일을 보냅니다"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/components/telepathyClient.js:1192
|
#: ../js/ui/components/telepathyClient.js:1206
|
||||||
#, c-format
|
#, c-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님이 요청합니다"
|
msgstr "연결 상태인지 알 수 있는 권한을 %s님이 요청합니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1284
|
#: ../js/ui/components/telepathyClient.js:1298
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "네트워크 오류"
|
msgstr "네트워크 오류"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1286
|
#: ../js/ui/components/telepathyClient.js:1300
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "인증이 실패했습니다"
|
msgstr "인증이 실패했습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1288
|
#: ../js/ui/components/telepathyClient.js:1302
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "암호화 오류"
|
msgstr "암호화 오류"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1290
|
#: ../js/ui/components/telepathyClient.js:1304
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "인증서가 없습니다"
|
msgstr "인증서가 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1292
|
#: ../js/ui/components/telepathyClient.js:1306
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "인증서를 신뢰할 수 없습니다"
|
msgstr "인증서를 신뢰할 수 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1294
|
#: ../js/ui/components/telepathyClient.js:1308
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "인증서가 만료되었습니다"
|
msgstr "인증서가 만료되었습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1296
|
#: ../js/ui/components/telepathyClient.js:1310
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "인증서를 활성화하지 않았습니다"
|
msgstr "인증서를 활성화하지 않았습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1298
|
#: ../js/ui/components/telepathyClient.js:1312
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "인증서 호스트 이름이 맞지 않습니다"
|
msgstr "인증서 호스트 이름이 맞지 않습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1300
|
#: ../js/ui/components/telepathyClient.js:1314
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "인증서 핑거프린트가 맞지 않습니다"
|
msgstr "인증서 핑거프린트가 맞지 않습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1302
|
#: ../js/ui/components/telepathyClient.js:1316
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "인증서가 자기 서명한 인증서입니다"
|
msgstr "인증서가 자기 서명한 인증서입니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1304
|
#: ../js/ui/components/telepathyClient.js:1318
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "상태를 오프라인으로 설정"
|
msgstr "상태를 오프라인으로 설정"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1306
|
#: ../js/ui/components/telepathyClient.js:1320
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "암호화를 사용할 수 없습니다"
|
msgstr "암호화를 사용할 수 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1308
|
#: ../js/ui/components/telepathyClient.js:1322
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "인증서가 올바르지 않습니다"
|
msgstr "인증서가 올바르지 않습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1310
|
#: ../js/ui/components/telepathyClient.js:1324
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "연결이 거부되었습니다"
|
msgstr "연결이 거부되었습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1312
|
#: ../js/ui/components/telepathyClient.js:1326
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "연결할 수 없습니다"
|
msgstr "연결할 수 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1314
|
#: ../js/ui/components/telepathyClient.js:1328
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "연결이 끊어졌습니다"
|
msgstr "연결이 끊어졌습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1316
|
#: ../js/ui/components/telepathyClient.js:1330
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "이 계정은 이미 서버에 연결했습니다"
|
msgstr "이 계정은 이미 서버에 연결했습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1318
|
#: ../js/ui/components/telepathyClient.js:1332
|
||||||
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 "같은 자원을 사용하는 새로운 연결로 바꾸었습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1320
|
#: ../js/ui/components/telepathyClient.js:1334
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "계정이 이미 서버에 있습니다"
|
msgstr "계정이 이미 서버에 있습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1322
|
#: ../js/ui/components/telepathyClient.js:1336
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "서버가 처리할 작업이 많아 연결을 처리할 수 없습니다"
|
msgstr "서버가 처리할 작업이 많아 연결을 처리할 수 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1324
|
#: ../js/ui/components/telepathyClient.js:1338
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "인증서를 철회했습니다"
|
msgstr "인증서를 철회했습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1326
|
#: ../js/ui/components/telepathyClient.js:1340
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "인증서가 보안에 취약한 알고리즘을 사용하거나 암호화 기능이 취약합니다."
|
msgstr "인증서가 보안에 취약한 알고리즘을 사용하거나 암호화 기능이 취약합니다."
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1328
|
#: ../js/ui/components/telepathyClient.js:1342
|
||||||
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"
|
||||||
@ -819,26 +854,26 @@ msgstr ""
|
|||||||
"서버 인증서의 길이, 또는 서버 인증서 체인의 단계가 암호화 라이브러리의 제한"
|
"서버 인증서의 길이, 또는 서버 인증서 체인의 단계가 암호화 라이브러리의 제한"
|
||||||
"을 넘어갑니다."
|
"을 넘어갑니다."
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1330
|
#: ../js/ui/components/telepathyClient.js:1344
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "내부 오류"
|
msgstr "내부 오류"
|
||||||
|
|
||||||
#. 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:1340
|
#: ../js/ui/components/telepathyClient.js:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "%s에 연결이 실패했습니다"
|
msgstr "%s에 연결이 실패했습니다"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1349
|
#: ../js/ui/components/telepathyClient.js:1363
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "다시 연결"
|
msgstr "다시 연결"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1350
|
#: ../js/ui/components/telepathyClient.js:1364
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "계정 편집"
|
msgstr "계정 편집"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1395
|
#: ../js/ui/components/telepathyClient.js:1409
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "알 수 없는 이유"
|
msgstr "알 수 없는 이유"
|
||||||
|
|
||||||
@ -955,84 +990,76 @@ msgid "Download and install '%s' from extensions.gnome.org?"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"extensions.gnome.org 사이트에서 '%s' 확장을 다운로드해 설치하시겠습니까?"
|
"extensions.gnome.org 사이트에서 '%s' 확장을 다운로드해 설치하시겠습니까?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "트레이"
|
msgstr "트레이"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:545 ../js/ui/status/keyboard.js:146
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "키보드"
|
msgstr "키보드"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:694
|
#: ../js/ui/lookingGlass.js:691
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "확장을 설치하지 않았습니다"
|
msgstr "확장을 설치하지 않았습니다"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:748
|
#: ../js/ui/lookingGlass.js:745
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s에서 발생한 에러가 없습니다."
|
msgstr "%s에서 발생한 에러가 없습니다."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:754
|
#: ../js/ui/lookingGlass.js:751
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "오류 숨기기"
|
msgstr "오류 숨기기"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
|
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "오류 보이기"
|
msgstr "오류 보이기"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:767
|
#: ../js/ui/lookingGlass.js:764
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "사용"
|
msgstr "사용"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
|
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "사용 않음"
|
msgstr "사용 않음"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:772
|
#: ../js/ui/lookingGlass.js:769
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "오류"
|
msgstr "오류"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:774
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "오래 된 버전"
|
msgstr "오래 된 버전"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:776
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "다운로드 중"
|
msgstr "다운로드 중"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:800
|
#: ../js/ui/lookingGlass.js:797
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "소스 보기"
|
msgstr "소스 보기"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:809
|
#: ../js/ui/lookingGlass.js:806
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "웹페이지"
|
msgstr "웹페이지"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1233
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "열기"
|
msgstr "열기"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1240
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "제거"
|
msgstr "제거"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1250
|
#: ../js/ui/messageTray.js:1533
|
||||||
msgid "Unmute"
|
|
||||||
msgstr "음소거 해제"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1250
|
|
||||||
msgid "Mute"
|
|
||||||
msgstr "음소거"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2037
|
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "메시지 트레이"
|
msgstr "메시지 트레이"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2485
|
#: ../js/ui/messageTray.js:2544
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "시스템 정보"
|
msgstr "시스템 정보"
|
||||||
|
|
||||||
@ -1041,11 +1068,11 @@ msgctxt "program"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "알 수 없음"
|
msgstr "알 수 없음"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:83
|
#: ../js/ui/overview.js:82
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "실행 취소"
|
msgstr "실행 취소"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:128
|
#: ../js/ui/overview.js:127
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "개요"
|
msgstr "개요"
|
||||||
|
|
||||||
@ -1053,13 +1080,13 @@ msgstr "개요"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:201
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "검색하려면 입력하십시오..."
|
msgstr "검색하려면 입력하십시오..."
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:223
|
#: ../js/ui/overview.js:222
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "대시보드"
|
msgstr "대시보드"
|
||||||
|
|
||||||
@ -1077,25 +1104,12 @@ msgstr "현재 활동"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "위 막대"
|
msgstr "위 막대"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:115
|
|
||||||
#, c-format
|
|
||||||
msgid "Failed to unmount '%s'"
|
|
||||||
msgstr "'%s' 마운트 해제에 실패했습니다"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:118
|
|
||||||
msgid "Retry"
|
|
||||||
msgstr "다시 시도"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:349
|
|
||||||
msgid "PLACES & DEVICES"
|
|
||||||
msgstr "위치 및 장치"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:728
|
#: ../js/ui/popupMenu.js:731
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -1105,17 +1119,17 @@ msgstr "명령을 입력하십시오:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%B %d일 %A"
|
msgstr "%B %d일 %A"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
msgstr[0] "새 메시지 %d개"
|
msgstr[0] "새 메시지 %d개"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -1137,11 +1151,11 @@ msgstr "복사"
|
|||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "붙여넣기"
|
msgstr "붙여넣기"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:96
|
#: ../js/ui/shellEntry.js:102
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "텍스트 보이기"
|
msgstr "텍스트 보이기"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:98
|
#: ../js/ui/shellEntry.js:104
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "텍스트 숨기기"
|
msgstr "텍스트 숨기기"
|
||||||
|
|
||||||
@ -1153,7 +1167,7 @@ msgstr "암호"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "암호 저장"
|
msgstr "암호 저장"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:138
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "잠금 풀기"
|
msgstr "잠금 풀기"
|
||||||
|
|
||||||
@ -1271,7 +1285,7 @@ msgstr "키보드 설정"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "마우스 설정"
|
msgstr "마우스 설정"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "소리 설정"
|
msgstr "소리 설정"
|
||||||
|
|
||||||
@ -1329,11 +1343,11 @@ msgstr "해당 장치에 표시된 PIN을 입력하십시오."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "확인"
|
msgstr "확인"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "키보드 배치 표시"
|
msgstr "키보드 배치 표시"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "지역 및 언어 설정"
|
msgstr "지역 및 언어 설정"
|
||||||
|
|
||||||
@ -1553,7 +1567,7 @@ msgstr "알 수 없음"
|
|||||||
|
|
||||||
# 오디오 볼륨
|
# 오디오 볼륨
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "볼륨"
|
msgstr "볼륨"
|
||||||
|
|
||||||
@ -1561,67 +1575,63 @@ msgstr "볼륨"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "마이크"
|
msgstr "마이크"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:145
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "다른 사용자로 로그인"
|
msgstr "다른 사용자로 로그인"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "대화 가능"
|
msgstr "대화 가능"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "다른 용무 중"
|
msgstr "다른 용무 중"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "안 보임"
|
msgstr "안 보임"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "자리 비움"
|
msgstr "자리 비움"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "입력 없음"
|
msgstr "입력 없음"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "사용 불가"
|
msgstr "사용 불가"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:610 ../js/ui/userMenu.js:751
|
#: ../js/ui/userMenu.js:740
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "사용자 바꾸기"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:611
|
|
||||||
msgid "Switch Session"
|
|
||||||
msgstr "세션 바꾸기"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:735
|
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "알림"
|
msgstr "알림"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:743
|
#: ../js/ui/userMenu.js:748
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "시스템 설정"
|
msgstr "시스템 설정"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:756
|
#: ../js/ui/userMenu.js:756
|
||||||
|
msgid "Switch User"
|
||||||
|
msgstr "사용자 바꾸기"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:761
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "로그아웃"
|
msgstr "로그아웃"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:761
|
#: ../js/ui/userMenu.js:766
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "잠그기"
|
msgstr "잠그기"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:776
|
#: ../js/ui/userMenu.js:781
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "업데이트 설치 후 다시 시작"
|
msgstr "업데이트 설치 후 다시 시작"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:794
|
#: ../js/ui/userMenu.js:799
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "대화 가능 상태가 다른 용무 중으로 설정됩니다"
|
msgstr "대화 가능 상태가 다른 용무 중으로 설정됩니다"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:795
|
#: ../js/ui/userMenu.js:800
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1629,19 +1639,19 @@ msgstr ""
|
|||||||
"이제 메신저를 포함해 모든 알림 기능을 사용하지 않습니다. 온라인 상태는 메시지"
|
"이제 메신저를 포함해 모든 알림 기능을 사용하지 않습니다. 온라인 상태는 메시지"
|
||||||
"를 보지 못하는 것처럼 보이게 조정합니다."
|
"를 보지 못하는 것처럼 보이게 조정합니다."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:86
|
#: ../js/ui/viewSelector.js:85
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "창"
|
msgstr "창"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:90
|
#: ../js/ui/viewSelector.js:89
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "프로그램"
|
msgstr "프로그램"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:93
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "검색"
|
msgstr "검색"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:117
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1651,12 +1661,12 @@ msgstr ""
|
|||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
# 원래 "신탁"이지만 한국인이 이해하기 쉽게 맞게 변경.
|
# 원래 "신탁"이지만 한국인이 이해하기 쉽게 맞게 변경.
|
||||||
#: ../js/ui/wanda.js:127
|
#: ../js/ui/wanda.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "현자 %s께서 말씀하시길"
|
msgstr "현자 %s께서 말씀하시길"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:162
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "여러분이 좋아하는 이스터 에그"
|
msgstr "여러분이 좋아하는 이스터 에그"
|
||||||
|
|
||||||
@ -1731,106 +1741,5 @@ msgstr "기본값"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "인증 대화 창을 사용자가 닫았습니다"
|
msgstr "인증 대화 창을 사용자가 닫았습니다"
|
||||||
|
|
||||||
# 오디오 볼륨
|
#~ msgid "Switch Session"
|
||||||
#. Translators: this is the same string as the one found in
|
#~ msgstr "세션 바꾸기"
|
||||||
#. * nautilus
|
|
||||||
#: ../src/shell-util.c:94
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "홈"
|
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
|
||||||
#. * nautilus
|
|
||||||
#: ../src/shell-util.c:104
|
|
||||||
msgid "File System"
|
|
||||||
msgstr "파일 시스템"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
|
||||||
#. * method, and the second string is a path. For
|
|
||||||
#. * example, "Trash: some-directory". It means that the
|
|
||||||
#. * directory called "some-directory" is in the trash.
|
|
||||||
#.
|
|
||||||
#: ../src/shell-util.c:300
|
|
||||||
#, c-format
|
|
||||||
msgid "%1$s: %2$s"
|
|
||||||
msgstr "%s: %s"
|
|
||||||
|
|
||||||
#~ msgid "disabled OpenSearch providers"
|
|
||||||
#~ msgstr "사용하지 않는 OpenSearch 서비스"
|
|
||||||
|
|
||||||
#~ msgid "Show time with seconds"
|
|
||||||
#~ msgstr "시각에 초 표시"
|
|
||||||
|
|
||||||
#~ msgid "If true, display seconds in time."
|
|
||||||
#~ msgstr "참이면 시각에 초를 표시합니다."
|
|
||||||
|
|
||||||
#~ msgid "Show date in clock"
|
|
||||||
#~ msgstr "시계에 날짜 표시"
|
|
||||||
|
|
||||||
#~ msgid "If true, display date in the clock, in addition to time."
|
|
||||||
#~ msgstr "참이면 시계에 날짜를 시각과 같이 표시합니다."
|
|
||||||
|
|
||||||
#~ msgid "Offline"
|
|
||||||
#~ msgstr "오프라인"
|
|
||||||
|
|
||||||
#~ msgid "CONTACTS"
|
|
||||||
#~ msgstr "연락처"
|
|
||||||
|
|
||||||
#~ msgid "%a %b %e, %R:%S"
|
|
||||||
#~ msgstr "%b %e일 (%a), %R:%S"
|
|
||||||
|
|
||||||
#~ msgid "%a %b %e, %R"
|
|
||||||
#~ msgstr "%b %e일 (%a), %R"
|
|
||||||
|
|
||||||
#~ msgid "%a %R:%S"
|
|
||||||
#~ msgstr "(%a) %R:%S"
|
|
||||||
|
|
||||||
#~ msgid "%a %R"
|
|
||||||
#~ msgstr "(%a) %R"
|
|
||||||
|
|
||||||
#~ msgid "%a %b %e, %l:%M:%S %p"
|
|
||||||
#~ msgstr "%b %e일 (%a), %p %l:%M:%S"
|
|
||||||
|
|
||||||
#~ msgid "%a %b %e, %l:%M %p"
|
|
||||||
#~ msgstr "%b %e일 (%a), %p %l:%M"
|
|
||||||
|
|
||||||
#~ msgid "%a %l:%M:%S %p"
|
|
||||||
#~ msgstr "(%a) %p %l:%M:%S"
|
|
||||||
|
|
||||||
#~ msgid "%a %l:%M %p"
|
|
||||||
#~ msgstr "(%a) %p %l:%M"
|
|
||||||
|
|
||||||
#~ msgid "Connect to..."
|
|
||||||
#~ msgstr "연결..."
|
|
||||||
|
|
||||||
#~ msgid "Wrong password, please try again"
|
|
||||||
#~ msgstr "암호가 틀렸습니다. 다시 시도하십시오."
|
|
||||||
|
|
||||||
#~ msgid "Network"
|
|
||||||
#~ msgstr "네트워크"
|
|
||||||
|
|
||||||
#~ msgid "%s is online."
|
|
||||||
#~ msgstr "%s 연결 중."
|
|
||||||
|
|
||||||
#~ msgid "%s is offline."
|
|
||||||
#~ msgstr "%s 연결 중지."
|
|
||||||
|
|
||||||
#~ msgid "%s is away."
|
|
||||||
#~ msgstr "%s 다른 용무 중."
|
|
||||||
|
|
||||||
#~ msgid "%s is busy."
|
|
||||||
#~ msgstr "%s 부재중."
|
|
||||||
|
|
||||||
#~ msgid "Hidden"
|
|
||||||
#~ msgstr "감춤"
|
|
||||||
|
|
||||||
#~ msgid "Power Off..."
|
|
||||||
#~ msgstr "컴퓨터 끄기..."
|
|
||||||
|
|
||||||
#~ msgid "Online Accounts"
|
|
||||||
#~ msgstr "온라인 계정"
|
|
||||||
|
|
||||||
#~ msgid "Lock Screen"
|
|
||||||
#~ msgstr "화면 잠그기"
|
|
||||||
|
|
||||||
#~ msgid "Log Out..."
|
|
||||||
#~ msgstr "로그아웃..."
|
|
||||||
|
405
po/lt.po
405
po/lt.po
@ -1,5 +1,5 @@
|
|||||||
# Lithuanian translation for gnome-shell.
|
# Lithuanian translation for gnome-shell.
|
||||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
# Copyright © 2010-2012 Free Software Foundation, Inc.
|
||||||
# This file is distributed under the same license as the gnome-shell package.
|
# This file is distributed under the same license as the gnome-shell package.
|
||||||
# Žygimantas Beručka <zygis@gnome.org>, 2010, 2011, 2012.
|
# Žygimantas Beručka <zygis@gnome.org>, 2010, 2011, 2012.
|
||||||
# Algimantas Margevičius <gymka@mail.ru>, 2011.
|
# Algimantas Margevičius <gymka@mail.ru>, 2011.
|
||||||
@ -7,19 +7,37 @@
|
|||||||
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-shell&keywords=I18N+L10N&component=general\n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"POT-Creation-Date: 2012-09-17 17:49+0000\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"PO-Revision-Date: 2012-09-17 23:28+0300\n"
|
"POT-Creation-Date: 2012-09-27 19:27+0000\n"
|
||||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
"PO-Revision-Date: 2012-09-30 12:30+0300\n"
|
||||||
|
"Last-Translator: Žygimantas Beručka <zygis@gnome.org>\n"
|
||||||
"Language-Team: Lithuanian\n"
|
"Language-Team: Lithuanian\n"
|
||||||
"Language: lt\n"
|
"Language: lt\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
|
||||||
"X-Generator: Virtaal 0.7.0\n"
|
"100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
"X-Generator: Virtaal 0.7.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||||
|
msgid "Screenshots"
|
||||||
|
msgstr "Ekranvaizdžiai"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||||
|
msgid "Record a screencast"
|
||||||
|
msgstr "Įrašyti ekrano vaizdo įrašą"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Sistema"
|
||||||
|
|
||||||
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
|
msgid "Show the message tray"
|
||||||
|
msgstr "Rodyti pranešimų juostą"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME Shell aplinka"
|
msgstr "GNOME Shell aplinka"
|
||||||
@ -39,35 +57,62 @@ msgstr "Konfigūruoti GNOME Shell plėtinius"
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
msgstr "Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus programuotojams ir bandytojams"
|
msgstr ""
|
||||||
|
"Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus "
|
||||||
|
"programuotojams ir bandytojams"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
msgid ""
|
||||||
msgstr "Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-F2 dialogą."
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
|
"dialog."
|
||||||
|
msgstr ""
|
||||||
|
"Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-"
|
||||||
|
"F2 dialogą."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||||
msgid "Uuids of extensions to enable"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "Įjungtinų plėtinių UUID."
|
msgstr "Įjungtinų plėtinių UUID."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||||
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
msgid ""
|
||||||
msgstr "GNOME Shell plėtiniai turi uuid savybę; šiame rakte išvardinti plėtiniai, kurie turėtų būti įkelti. Bet kuris plėtinys, kuris nori būti įkeltas, turi būti šiame sąraše. Šį sąrašą taip pat galima keisti naudojant org.gnome.Shell DBus metodus EnableExtension ir DisableExtension."
|
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
||||||
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
|
"list. You can also manipulate this list with the EnableExtension and "
|
||||||
|
"DisableExtension DBus methods on org.gnome.Shell."
|
||||||
|
msgstr ""
|
||||||
|
"GNOME Shell plėtiniai turi uuid savybę; šiame rakte išvardinti plėtiniai, "
|
||||||
|
"kurie turėtų būti įkelti. Bet kuris plėtinys, kuris nori būti įkeltas, turi "
|
||||||
|
"būti šiame sąraše. Šį sąrašą taip pat galima keisti naudojant org.gnome."
|
||||||
|
"Shell DBus metodus EnableExtension ir DisableExtension."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||||
msgid "Whether to collect stats about applications usage"
|
msgid "Whether to collect stats about applications usage"
|
||||||
msgstr "Ar rinkti statistinę informaciją apie programų naudojimą"
|
msgstr "Ar rinkti statistinę informaciją apie programų naudojimą"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||||
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
msgid ""
|
||||||
msgstr "Įprastai GNOME aplinka stebi aktyvias programas siekiant pateikti dažniausiai naudojamas (pvz., leistukuose). Nors šie duomenys konfidencialiai saugomi, jei norite, saugumo sumetimais galite šią funkciją išjungti. Atminkite, kad išjungus šią funkciją anksčiau įrašyti duomenys nebus pašalinti."
|
"The shell normally monitors active applications in order to present the most "
|
||||||
|
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||||
|
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||||
|
"remove already saved data."
|
||||||
|
msgstr ""
|
||||||
|
"Įprastai GNOME aplinka stebi aktyvias programas siekiant pateikti "
|
||||||
|
"dažniausiai naudojamas (pvz., leistukuose). Nors šie duomenys "
|
||||||
|
"konfidencialiai saugomi, jei norite, saugumo sumetimais galite šią funkciją "
|
||||||
|
"išjungti. Atminkite, kad išjungus šią funkciją anksčiau įrašyti duomenys "
|
||||||
|
"nebus pašalinti."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr "Mėgstamų programų darbastalio failų ID sąrašas"
|
msgstr "Mėgstamų programų darbastalio failų ID sąrašas"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
||||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
msgid ""
|
||||||
msgstr "Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų srityje."
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
|
"favorites area."
|
||||||
|
msgstr ""
|
||||||
|
"Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų "
|
||||||
|
"srityje."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
@ -78,12 +123,20 @@ msgid "History for the looking glass dialog"
|
|||||||
msgstr "Didinamojo stiklo dialogo retrospektyva"
|
msgstr "Didinamojo stiklo dialogo retrospektyva"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||||
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
msgid ""
|
||||||
msgstr "Naudojama viduje paskutinei naudotojo nustatytai pranešimų būsenai saugoti. Vertė yra iš TpConnectionPresenceType išvardinimo."
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"Naudojama viduje paskutinei naudotojo nustatytai pranešimų būsenai saugoti. "
|
||||||
|
"Vertė yra iš TpConnectionPresenceType išvardinimo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||||
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
msgid ""
|
||||||
msgstr "Naudojama viduje paskutines sesijos naudotojo būvimo būsenai saugoti. Vertė yra iš GsmPresenceStatus išvardinimo."
|
"Internally used to store the last session presence status for the user. The "
|
||||||
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"Naudojama viduje paskutines sesijos naudotojo būvimo būsenai saugoti. Vertė "
|
||||||
|
"yra iš GsmPresenceStatus išvardinimo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
@ -130,8 +183,12 @@ msgid "Framerate used for recording screencasts."
|
|||||||
msgstr "Kadrų dažnis, naudojamas norint įrašyti ekrano vaizdo įrašą."
|
msgstr "Kadrų dažnis, naudojamas norint įrašyti ekrano vaizdo įrašą."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
msgid ""
|
||||||
msgstr "GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis kadrais per sekundę."
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
|
"screencast recorder in frames-per-second."
|
||||||
|
msgstr ""
|
||||||
|
"GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis "
|
||||||
|
"kadrais per sekundę."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
@ -139,27 +196,43 @@ msgstr "Gstreamer konvejeris, naudojamas užkoduojant ekrano vaizdo įrašą."
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
#| msgid ""
|
msgid ""
|
||||||
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
#| "pad where the recorded video is recorded. It will normally have a "
|
"the recorded video is recorded. It will normally have a unconnected source "
|
||||||
#| "unconnected source pad; output from that pad will be written into the "
|
"pad; output from that pad will be written into the output file. However the "
|
||||||
#| "output file. However the pipeline can also take care of its own output - "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
#| "this might be used to send the output to an icecast server via shout2send "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
#| "or similar. When unset or set to an empty value, the default pipeline "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
|
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||||
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
|
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||||
#| "placeholder for a guess at the optimal thread count on the system."
|
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
msgstr ""
|
||||||
msgstr "Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-launch sintaksė. Konvejeryje turėtų būti neprijungtas išvesties pagrindo elementas, kuriame įrašomas vaizdo įrašas. Paprastai jame yra neprijungtas šaltinio elementas; išvestis iš to elemento bus įrašyta į išvesties failą. Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi – tai gali būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, naudojamas numatytasis konvejeris. Šiuo metu tai yra „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux“ ir įrašo į WEBM naudojant VP8 kodeką. %T yra naudojamas kaip žymeklis optimalaus gijų skaičiaus sistemoje spėjimui."
|
"Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-"
|
||||||
|
"launch sintaksė. Konvejeryje turėtų būti neprijungtas išvesties pagrindo "
|
||||||
|
"elementas, kuriame įrašomas vaizdo įrašas. Paprastai jame yra neprijungtas "
|
||||||
|
"šaltinio elementas; išvestis iš to elemento bus įrašyta į išvesties failą. "
|
||||||
|
"Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi – tai gali "
|
||||||
|
"būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar "
|
||||||
|
"pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, "
|
||||||
|
"naudojamas numatytasis konvejeris. Šiuo metu tai yra „vp8enc "
|
||||||
|
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||||
|
"queue ! webmmux“ ir įrašo į WEBM naudojant VP8 kodeką. %T yra naudojamas "
|
||||||
|
"kaip žymeklis optimalaus gijų skaičiaus sistemoje spėjimui."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Failų plėtinys, naudojamas įrašyti ekrano vaizdo įrašą"
|
msgstr "Failų plėtinys, naudojamas įrašyti ekrano vaizdo įrašą"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
msgid ""
|
||||||
msgstr "Įrašytų ekrano vaizdo įrašų failų vardas bus unikalus, sudaromas atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą konteinerio formatą jį reikėtų pakeisti."
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
|
"a different container format."
|
||||||
|
msgstr ""
|
||||||
|
"Įrašytų ekrano vaizdo įrašų failų vardas bus unikalus, sudaromas "
|
||||||
|
"atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą "
|
||||||
|
"konteinerio formatą jį reikėtų pakeisti."
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:124
|
#: ../js/extensionPrefs/main.js:124
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -174,11 +247,11 @@ msgstr "Plėtinys"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį."
|
msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:526
|
#: ../js/gdm/loginDialog.js:528
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Seansas..."
|
msgstr "Seansas..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:675
|
#: ../js/gdm/loginDialog.js:676
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Prisijungti"
|
msgstr "Prisijungti"
|
||||||
@ -186,55 +259,56 @@ msgstr "Prisijungti"
|
|||||||
#. 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:742
|
#: ../js/gdm/loginDialog.js:743
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Nėra sąraše?"
|
msgstr "Nėra sąraše?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:895
|
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||||
#: ../js/ui/components/networkAgent.js:137
|
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||||
#: ../js/ui/components/polkitAgent.js:162
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||||
#: ../js/ui/endSessionDialog.js:373
|
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||||
#: ../js/ui/extensionDownloader.js:195
|
|
||||||
#: ../js/ui/shellMountOperation.js:396
|
|
||||||
#: ../js/ui/status/bluetooth.js:427
|
|
||||||
#: ../js/ui/unlockDialog.js:137
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Atsisakyti"
|
msgstr "Atsisakyti"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:900
|
#: ../js/gdm/loginDialog.js:901
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Prisijungti"
|
msgstr "Prisijungti"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1239
|
#: ../js/gdm/loginDialog.js:1240
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Prisijungimo langas"
|
msgstr "Prisijungimo langas"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:88
|
#. Translators: accessible name of the power menu in the login screen
|
||||||
#: ../js/ui/userMenu.js:657
|
#: ../js/gdm/powerMenu.js:35
|
||||||
#: ../js/ui/userMenu.js:661
|
msgid "Power"
|
||||||
#: ../js/ui/userMenu.js:772
|
msgstr "Energija"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||||
|
#: ../js/ui/userMenu.js:778
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Užmigdyti"
|
msgstr "Užmigdyti"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:93
|
#: ../js/gdm/powerMenu.js:94
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Paleisti iš naujo"
|
msgstr "Paleisti iš naujo"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:98
|
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||||
#: ../js/ui/userMenu.js:659
|
#: ../js/ui/userMenu.js:777
|
||||||
#: ../js/ui/userMenu.js:661
|
|
||||||
#: ../js/ui/userMenu.js:771
|
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Išjungti"
|
msgstr "Išjungti"
|
||||||
|
|
||||||
|
#: ../js/gdm/util.js:148
|
||||||
|
msgid "Authentication error"
|
||||||
|
msgstr "Tapatybės patvirtinimo klaida"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/util.js:247
|
#: ../js/gdm/util.js:265
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(arba perbraukite pirštu)"
|
msgstr "(arba perbraukite pirštu)"
|
||||||
|
|
||||||
#: ../js/gdm/util.js:272
|
#: ../js/gdm/util.js:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(pvz., naudotojas arba %s)"
|
msgstr "(pvz., naudotojas arba %s)"
|
||||||
@ -271,8 +345,7 @@ msgstr "NUSTATYMAI"
|
|||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Naujas langas"
|
msgstr "Naujas langas"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:678
|
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||||
#: ../js/ui/dash.js:271
|
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Pašalinti iš mėgstamų"
|
msgstr "Pašalinti iš mėgstamų"
|
||||||
|
|
||||||
@ -449,8 +522,7 @@ msgstr "Atverti su %s"
|
|||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Išimti"
|
msgstr "Išimti"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:86
|
#: ../js/ui/components/keyring.js:86 ../js/ui/components/polkitAgent.js:260
|
||||||
#: ../js/ui/components/polkitAgent.js:260
|
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Slaptažodis:"
|
msgstr "Slaptažodis:"
|
||||||
|
|
||||||
@ -502,8 +574,12 @@ msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę"
|
|||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:310
|
#: ../js/ui/components/networkAgent.js:310
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
msgid ""
|
||||||
msgstr "Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio tinklo „%s“."
|
"Passwords or encryption keys are required to access the wireless network "
|
||||||
|
"'%s'."
|
||||||
|
msgstr ""
|
||||||
|
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
|
||||||
|
"tinklo „%s“."
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:314
|
#: ../js/ui/components/networkAgent.js:314
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
@ -554,8 +630,7 @@ msgstr "Patvirtinti tapatybę"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
#: ../js/ui/components/polkitAgent.js:248
|
#: ../js/ui/components/polkitAgent.js:248 ../js/ui/shellMountOperation.js:381
|
||||||
#: ../js/ui/shellMountOperation.js:381
|
|
||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
|
msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
|
||||||
|
|
||||||
@ -617,7 +692,7 @@ msgstr "Išsiųsta <b>%B %d</b>, <b>%A</b>"
|
|||||||
#: ../js/ui/components/telepathyClient.js:959
|
#: ../js/ui/components/telepathyClient.js:959
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Išsiųsta %Y <b>%B %d</b>, <b>%A</b>"
|
msgstr "Išsiųsta %Y m. <b>%B %d d.</b>, <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
@ -760,7 +835,8 @@ msgid "This account is already connected to the server"
|
|||||||
msgstr "Ši paskyra jau prijungta prie serverio"
|
msgstr "Ši paskyra jau prijungta prie serverio"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1332
|
#: ../js/ui/components/telepathyClient.js:1332
|
||||||
msgid "Connection has been replaced by a new connection using the same resource"
|
msgid ""
|
||||||
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių"
|
msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1334
|
#: ../js/ui/components/telepathyClient.js:1334
|
||||||
@ -776,12 +852,19 @@ msgid "Certificate has been revoked"
|
|||||||
msgstr "Liudijimas atšauktas"
|
msgstr "Liudijimas atšauktas"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1340
|
#: ../js/ui/components/telepathyClient.js:1340
|
||||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
msgid ""
|
||||||
msgstr "Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai silpnas"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
|
msgstr ""
|
||||||
|
"Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai "
|
||||||
|
"silpnas"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1342
|
#: ../js/ui/components/telepathyClient.js:1342
|
||||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
msgid ""
|
||||||
msgstr "Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos bibliotekos apribojimus"
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
|
msgstr ""
|
||||||
|
"Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos "
|
||||||
|
"bibliotekos apribojimus"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1344
|
#: ../js/ui/components/telepathyClient.js:1344
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
@ -806,8 +889,7 @@ msgstr "Taisyti paskyrą"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Nežinoma priežastis"
|
msgstr "Nežinoma priežastis"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:245
|
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||||
#: ../js/ui/dash.js:273
|
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Rodyti programos"
|
msgstr "Rodyti programos"
|
||||||
|
|
||||||
@ -839,7 +921,9 @@ msgstr "Atsijungti"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:63
|
#: ../js/ui/endSessionDialog.js:63
|
||||||
msgid "Click Log Out to quit these applications and log out of the system."
|
msgid "Click Log Out to quit these applications and log out of the system."
|
||||||
msgstr "Spustelėkite „Išeiti“, jei norite užverti šias programas ir atsijungti nuo sistemos."
|
msgstr ""
|
||||||
|
"Spustelėkite „Išeiti“, jei norite užverti šias programas ir atsijungti nuo "
|
||||||
|
"sistemos."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:65
|
#: ../js/ui/endSessionDialog.js:65
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -873,7 +957,9 @@ msgstr "Išjungti"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:82
|
#: ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Click Power Off to quit these applications and power off the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr "Spustelėkite „Išjungti“, jei norite užverti šias programas ir išjungti sistemą."
|
msgstr ""
|
||||||
|
"Spustelėkite „Išjungti“, jei norite užverti šias programas ir išjungti "
|
||||||
|
"sistemą."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:84
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -887,8 +973,7 @@ msgstr[2] "Sistema automatiškai išsijungs po %d sekundžių."
|
|||||||
msgid "Powering off the system."
|
msgid "Powering off the system."
|
||||||
msgstr "Sistema išjungiama."
|
msgstr "Sistema išjungiama."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:90
|
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
||||||
#: ../js/ui/endSessionDialog.js:107
|
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Paleisti iš naujo"
|
msgstr "Paleisti iš naujo"
|
||||||
@ -905,7 +990,9 @@ msgstr "Paleisti iš naujo"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:99
|
#: ../js/ui/endSessionDialog.js:99
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr "Spustelėkite „Paleisti iš naujo“, jei norite užverti šias programas ir paleisti sistemą iš naujo."
|
msgstr ""
|
||||||
|
"Spustelėkite „Paleisti iš naujo“, jei norite užverti šias programas ir "
|
||||||
|
"paleisti sistemą iš naujo."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:101
|
#: ../js/ui/endSessionDialog.js:101
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -928,12 +1015,11 @@ msgstr "Įdiegti"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
|
msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:337
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "dėklas"
|
msgstr "dėklas"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:561
|
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||||
#: ../js/ui/status/keyboard.js:146
|
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Klaviatūra"
|
msgstr "Klaviatūra"
|
||||||
@ -952,8 +1038,7 @@ msgstr "%s nepranešė apie jokias klaidas."
|
|||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Slėpti klaidas"
|
msgstr "Slėpti klaidas"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:755
|
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||||
#: ../js/ui/lookingGlass.js:815
|
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Rodyti klaidas"
|
msgstr "Rodyti klaidas"
|
||||||
|
|
||||||
@ -963,8 +1048,7 @@ msgstr "Įjungta"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:767
|
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1082
|
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Išjungta"
|
msgstr "Išjungta"
|
||||||
|
|
||||||
@ -988,24 +1072,23 @@ msgstr "Žiūrėti šaltinį"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Tinklalapis"
|
msgstr "Tinklalapis"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1080
|
#: ../js/ui/messageTray.js:1081
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Atverti"
|
msgstr "Atverti"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1087
|
#: ../js/ui/messageTray.js:1088
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Pašalinti"
|
msgstr "Pašalinti"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2041
|
#: ../js/ui/messageTray.js:2088
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Pranešimų juosta"
|
msgstr "Pranešimų juosta"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2483
|
#: ../js/ui/messageTray.js:2551
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Sistemos informacija"
|
msgstr "Sistemos informacija"
|
||||||
|
|
||||||
#: ../js/ui/notificationDaemon.js:506
|
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:373
|
||||||
#: ../src/shell-app.c:373
|
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nežinoma"
|
msgstr "Nežinoma"
|
||||||
@ -1061,11 +1144,11 @@ msgstr "Įveskite komandą:"
|
|||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format
|
||||||
#: ../js/ui/screenShield.js:78
|
#: ../js/ui/screenShield.js:79
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %B %d"
|
msgstr "%A, %B %d"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:143
|
#: ../js/ui/screenShield.js:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new message"
|
msgid "%d new message"
|
||||||
msgid_plural "%d new messages"
|
msgid_plural "%d new messages"
|
||||||
@ -1073,7 +1156,7 @@ msgstr[0] "%d naujas pranešimas"
|
|||||||
msgstr[1] "%d nauji pranešimai"
|
msgstr[1] "%d nauji pranešimai"
|
||||||
msgstr[2] "%d naujų pranešimų"
|
msgstr[2] "%d naujų pranešimų"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:145
|
#: ../js/ui/screenShield.js:146
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new notification"
|
msgid "%d new notification"
|
||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
@ -1113,8 +1196,7 @@ msgstr "Slaptažodis"
|
|||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Atsiminti slaptažodį"
|
msgstr "Atsiminti slaptažodį"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:400
|
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||||
#: ../js/ui/unlockDialog.js:140
|
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Atrakinti"
|
msgstr "Atrakinti"
|
||||||
|
|
||||||
@ -1166,14 +1248,10 @@ msgstr "Didelis kontrastas"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Didelis tekstas"
|
msgstr "Didelis tekstas"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:27
|
#: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:31
|
||||||
#: ../js/ui/status/bluetooth.js:31
|
#: ../js/ui/status/bluetooth.js:251 ../js/ui/status/bluetooth.js:304
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:335 ../js/ui/status/bluetooth.js:371
|
||||||
#: ../js/ui/status/bluetooth.js:304
|
#: ../js/ui/status/bluetooth.js:400 ../js/ui/status/network.js:867
|
||||||
#: ../js/ui/status/bluetooth.js:335
|
|
||||||
#: ../js/ui/status/bluetooth.js:371
|
|
||||||
#: ../js/ui/status/bluetooth.js:400
|
|
||||||
#: ../js/ui/status/network.js:867
|
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -1194,8 +1272,7 @@ msgid "Bluetooth Settings"
|
|||||||
msgstr "Bluetooth nustatymai"
|
msgstr "Bluetooth nustatymai"
|
||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:103
|
#: ../js/ui/status/bluetooth.js:103 ../js/ui/status/network.js:208
|
||||||
#: ../js/ui/status/network.js:208
|
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "įrenginys išjungtas"
|
msgstr "įrenginys išjungtas"
|
||||||
|
|
||||||
@ -1203,13 +1280,11 @@ msgstr "įrenginys išjungtas"
|
|||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Ryšys"
|
msgstr "Ryšys"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:207
|
#: ../js/ui/status/bluetooth.js:207 ../js/ui/status/network.js:458
|
||||||
#: ../js/ui/status/network.js:458
|
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "atsijungiama..."
|
msgstr "atsijungiama..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:220
|
#: ../js/ui/status/bluetooth.js:220 ../js/ui/status/network.js:464
|
||||||
#: ../js/ui/status/network.js:464
|
|
||||||
#: ../js/ui/status/network.js:934
|
#: ../js/ui/status/network.js:934
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "jungiamasi..."
|
msgstr "jungiamasi..."
|
||||||
@ -1239,8 +1314,7 @@ msgstr "Klaviatūros nustatymai"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Pelės nustatymai"
|
msgstr "Pelės nustatymai"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269
|
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||||
#: ../js/ui/status/volume.js:236
|
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Garso nustatymai"
|
msgstr "Garso nustatymai"
|
||||||
|
|
||||||
@ -1267,8 +1341,7 @@ msgstr "Leisti tik šį kartą"
|
|||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Suporavimo patvirtinimas įrenginiui %s"
|
msgstr "Suporavimo patvirtinimas įrenginiui %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:378 ../js/ui/status/bluetooth.js:408
|
||||||
#: ../js/ui/status/bluetooth.js:408
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Įrenginys %s pageidauja būti suporuotas su šiuo kompiuteriu"
|
msgstr "Įrenginys %s pageidauja būti suporuotas su šiuo kompiuteriu"
|
||||||
@ -1299,11 +1372,11 @@ msgstr "Įveskite PIN, nurodytą įrenginyje."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Gerai"
|
msgstr "Gerai"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:170
|
#: ../js/ui/status/keyboard.js:228
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Rodyti klaviatūros išdėstymą"
|
msgstr "Rodyti klaviatūros išdėstymą"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:175
|
#: ../js/ui/status/keyboard.js:233
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Regiono ir kalbos nustatymai"
|
msgstr "Regiono ir kalbos nustatymai"
|
||||||
|
|
||||||
@ -1327,8 +1400,7 @@ msgid "unmanaged"
|
|||||||
msgstr "nevaldomas"
|
msgstr "nevaldomas"
|
||||||
|
|
||||||
#. 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:467
|
#: ../js/ui/status/network.js:467 ../js/ui/status/network.js:937
|
||||||
#: ../js/ui/status/network.js:937
|
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "reikia patvirtinti tapatybę"
|
msgstr "reikia patvirtinti tapatybę"
|
||||||
|
|
||||||
@ -1349,20 +1421,17 @@ msgstr "atjungtas laidas"
|
|||||||
msgid "unavailable"
|
msgid "unavailable"
|
||||||
msgstr "nepasiekiamas"
|
msgstr "nepasiekiamas"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:491
|
#: ../js/ui/status/network.js:491 ../js/ui/status/network.js:939
|
||||||
#: ../js/ui/status/network.js:939
|
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "nepavyko prisijungti"
|
msgstr "nepavyko prisijungti"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:552
|
#: ../js/ui/status/network.js:552 ../js/ui/status/network.js:1529
|
||||||
#: ../js/ui/status/network.js:1529
|
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Rodyti daugiau tinklų..."
|
msgstr "Rodyti daugiau tinklų..."
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:588
|
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1459
|
||||||
#: ../js/ui/status/network.js:1459
|
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Prisijungta (privatus)"
|
msgstr "Prisijungta (privatus)"
|
||||||
|
|
||||||
@ -1379,8 +1448,7 @@ msgid "Auto dial-up"
|
|||||||
msgstr "Automatinis telefoninis"
|
msgstr "Automatinis telefoninis"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:853
|
#: ../js/ui/status/network.js:853 ../js/ui/status/network.js:1476
|
||||||
#: ../js/ui/status/network.js:1476
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "Automatinis %s"
|
msgstr "Automatinis %s"
|
||||||
@ -1483,8 +1551,7 @@ msgstr[0] "liko %d minutė"
|
|||||||
msgstr[1] "liko %d minutės"
|
msgstr[1] "liko %d minutės"
|
||||||
msgstr[2] "liko %d minučių"
|
msgstr[2] "liko %d minučių"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:112
|
#: ../js/ui/status/power.js:112 ../js/ui/status/power.js:186
|
||||||
#: ../js/ui/status/power.js:186
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "percent of battery remaining"
|
msgctxt "percent of battery remaining"
|
||||||
msgid "%d%%"
|
msgid "%d%%"
|
||||||
@ -1536,8 +1603,7 @@ msgid "Unknown"
|
|||||||
msgstr "Nežinoma"
|
msgstr "Nežinoma"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:47
|
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||||
#: ../js/ui/status/volume.js:223
|
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Garsumas"
|
msgstr "Garsumas"
|
||||||
|
|
||||||
@ -1545,70 +1611,74 @@ msgstr "Garsumas"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofonas"
|
msgstr "Mikrofonas"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:147
|
#: ../js/ui/unlockDialog.js:176
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Prisijungti kaip kitas naudotojas"
|
msgstr "Prisijungti kaip kitas naudotojas"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:174
|
#: ../js/ui/userMenu.js:180
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Esu"
|
msgstr "Esu"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:177
|
#: ../js/ui/userMenu.js:183
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Užsiėmęs (-usi)"
|
msgstr "Užsiėmęs (-usi)"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:180
|
#: ../js/ui/userMenu.js:186
|
||||||
msgid "Invisible"
|
msgid "Invisible"
|
||||||
msgstr "Nematomas"
|
msgstr "Nematomas"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:183
|
#: ../js/ui/userMenu.js:189
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Išėjęs (-usi)"
|
msgstr "Išėjęs (-usi)"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:186
|
#: ../js/ui/userMenu.js:192
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Neužimtas"
|
msgstr "Neužimtas"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:189
|
#: ../js/ui/userMenu.js:195
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Nepasiekiamas"
|
msgstr "Nepasiekiamas"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||||
#: ../js/ui/userMenu.js:753
|
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Keisti naudotoją"
|
msgstr "Keisti naudotoją"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "Switch Session"
|
msgid "Switch Session"
|
||||||
msgstr "Perjungti seansą"
|
msgstr "Perjungti seansą"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:737
|
#: ../js/ui/userMenu.js:743
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Pranešimai"
|
msgstr "Pranešimai"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:745
|
#: ../js/ui/userMenu.js:751
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Sistemos nustatymai"
|
msgstr "Sistemos nustatymai"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:758
|
#: ../js/ui/userMenu.js:764
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Atsijungti"
|
msgstr "Atsijungti"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:763
|
#: ../js/ui/userMenu.js:769
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Užrakinti"
|
msgstr "Užrakinti"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:778
|
#: ../js/ui/userMenu.js:784
|
||||||
msgid "Install Updates & Restart"
|
msgid "Install Updates & Restart"
|
||||||
msgstr "Įdiegti atnaujinimus ir įkelti iš naujo"
|
msgstr "Įdiegti atnaujinimus ir įkelti iš naujo"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:796
|
#: ../js/ui/userMenu.js:802
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Jūsų pokalbio būsena bus nustatyta į užimta"
|
msgstr "Jūsų pokalbio būsena bus nustatyta į užimta"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:797
|
#: ../js/ui/userMenu.js:803
|
||||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
msgid ""
|
||||||
msgstr "Pranešimai šiuo metu yra išjungti, įskaitant pokalbių pranešimus. Jūsų būsena internete atitinkamai pakoreguota, kad kiti galėtų žinoti, jog jūs galite nepamatyti jų pranešimų."
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
|
msgstr ""
|
||||||
|
"Pranešimai šiuo metu yra išjungti, įskaitant pokalbių pranešimus. Jūsų "
|
||||||
|
"būsena internete atitinkamai pakoreguota, kad kiti galėtų žinoti, jog jūs "
|
||||||
|
"galite nepamatyti jų pranešimų."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:85
|
#: ../js/ui/viewSelector.js:85
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
@ -1622,7 +1692,7 @@ msgstr "Programos"
|
|||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Ieškoti"
|
msgstr "Ieškoti"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:123
|
#: ../js/ui/wanda.js:119
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
@ -1631,12 +1701,12 @@ msgstr ""
|
|||||||
"Atleiskite, šiandien išminties nebus:\n"
|
"Atleiskite, šiandien išminties nebus:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:127
|
#: ../js/ui/wanda.js:123
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr "Orakulė %s sako"
|
msgstr "Orakulė %s sako"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:164
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Jūsų mėgstamiausias velykinis kiaušinis"
|
msgstr "Jūsų mėgstamiausias velykinis kiaušinis"
|
||||||
|
|
||||||
@ -1683,7 +1753,7 @@ msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
|
|||||||
|
|
||||||
#: ../src/main.c:342
|
#: ../src/main.c:342
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "Naudoti specialią veikseną, pvz. „gdm“ prisijungimo ekranui"
|
msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
|
||||||
|
|
||||||
#: ../src/main.c:348
|
#: ../src/main.c:348
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
@ -1713,24 +1783,3 @@ msgstr "Numatytasis"
|
|||||||
#: ../src/shell-polkit-authentication-agent.c:343
|
#: ../src/shell-polkit-authentication-agent.c:343
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
|
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
|
||||||
|
|
||||||
#~ msgid "disabled OpenSearch providers"
|
|
||||||
#~ msgstr "išjungti OpenSearch tiekėjai"
|
|
||||||
|
|
||||||
#~ msgid "Failed to unmount '%s'"
|
|
||||||
#~ msgstr "Nepavyko atjungti „%s“"
|
|
||||||
|
|
||||||
#~ msgid "Retry"
|
|
||||||
#~ msgstr "Bandyti dar kartą"
|
|
||||||
|
|
||||||
#~ msgid "PLACES & DEVICES"
|
|
||||||
#~ msgstr "VIETOS IR ĮRENGINIAI"
|
|
||||||
|
|
||||||
#~ msgid "Home"
|
|
||||||
#~ msgstr "Namų aplankas"
|
|
||||||
|
|
||||||
#~ msgid "File System"
|
|
||||||
#~ msgstr "Failų sistema"
|
|
||||||
|
|
||||||
#~ msgid "%1$s: %2$s"
|
|
||||||
#~ msgstr "%1$s: %2$s"
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user