Compare commits
97 Commits
Author | SHA1 | Date | |
---|---|---|---|
c2e9e68df7 | |||
bdbf804e69 | |||
9718175f4d | |||
0ba346b750 | |||
614c4480e2 | |||
f21f612ef7 | |||
935de3e80f | |||
0f541f60e8 | |||
902c99c757 | |||
f7029674b0 | |||
dd7ccda168 | |||
e207b45317 | |||
6b5117677d | |||
900398406c | |||
461d2b1945 | |||
6c2f11e8a4 | |||
dbf993300a | |||
f77b3da74f | |||
bc6a38dda7 | |||
f3a02057c1 | |||
ad15ce9139 | |||
5d178506bf | |||
14cc9bfb1e | |||
ce4c485f34 | |||
1877a2e00a | |||
b2fa7a6d8f | |||
36c604d793 | |||
9a5a4b2206 | |||
3ab9e9e8ad | |||
dd59212d3f | |||
2b654ec310 | |||
764fbbe052 | |||
328c63bf64 | |||
95788c9834 | |||
9cf571efbd | |||
dc4128c78b | |||
73d8c82640 | |||
2f7377b250 | |||
804f23b179 | |||
2be6ddc54e | |||
dff4f0109e | |||
2e663b2a94 | |||
9f4aa6ebf2 | |||
afe5703710 | |||
02d06bb1f3 | |||
3a78695bd9 | |||
13e8c35d36 | |||
3b8dfd98dd | |||
6b610b26f8 | |||
81956e9b84 | |||
6b41f82346 | |||
1fca090374 | |||
da2fc2c9d3 | |||
52cbc299a7 | |||
9f436ce373 | |||
d908940ef3 | |||
eeda54f24d | |||
b8b5da1e95 | |||
3a9ad5c577 | |||
d57dc94d9e | |||
393d7246cc | |||
6217c3b88d | |||
ddd4fd9c24 | |||
d2a97e7f1d | |||
aa75e89216 | |||
3f756dc608 | |||
ed8e89bc19 | |||
c90a4e4849 | |||
f433b12d6e | |||
7ca418a79a | |||
a9ad91c831 | |||
bd1c7774ee | |||
91da3789bc | |||
2991f9f102 | |||
49d8ff38e7 | |||
4b522a02c3 | |||
ebe6f59d7e | |||
e5c95b910d | |||
2f76951658 | |||
3efd296fc3 | |||
6688610c23 | |||
d2c75801ea | |||
be84a00022 | |||
da537cda43 | |||
304c667bca | |||
879a81abeb | |||
e68ca5adbd | |||
cf69fe4b18 | |||
8f848925f6 | |||
d21657fe61 | |||
ce3555382b | |||
837a00c3f0 | |||
132c8e0cf8 | |||
9c62522419 | |||
0d5bae3844 | |||
97f6a35b46 | |||
43e8dfacb4 |
64
NEWS
64
NEWS
@ -1,3 +1,67 @@
|
||||
3.30.0
|
||||
======
|
||||
|
||||
Contributors:
|
||||
Harry Mallon, Marco Trevisan (Treviño)
|
||||
|
||||
Translators:
|
||||
Fran Dieguez [gl], Trần Ngọc Quân [vi], Balázs Meskó [hu],
|
||||
Rūdolfs Mazurs [lv], Jiri Grönroos [fi], Anders Jonsson [sv], gogo [hr],
|
||||
Ask Hjorth Larsen [da]
|
||||
|
||||
3.29.92
|
||||
=======
|
||||
* Choose some actors to cache on the GPU [Daniel; #792633]
|
||||
* inputMethod: Hide preedit text if requested [Takao; #431]
|
||||
* Fix forced fallback app-menus on wayland [Jonas; #276]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Takao Fujiwara, Mohammed Sadiq, Marco Trevisan (Treviño),
|
||||
Daniel van Vugt
|
||||
|
||||
Translators:
|
||||
Baurzhan Muftakhidinov [kk], Kukuh Syafaat [id], Milo Casagrande [it],
|
||||
Changwoo Ryu [ko], Marek Cernocky [cs]
|
||||
|
||||
3.29.91
|
||||
=======
|
||||
* Fix handling of 0/false options in ShowOSD D-Bus API [Florian; #791669]
|
||||
* overview: Fix handling of confirmation dialogs on wayland [verdre; !180]
|
||||
* Avoid some full relayout/redraws [Carlos; !197]
|
||||
* Keep workspace switcher slid out when workspaces are in use [Florian; !161]
|
||||
* Ignore auto-repeat for some keybindings [Andrea; #373]
|
||||
* Misc. bug fixes [Carlos, Florian, Pascal; #464, !189, !191, !192, !162]
|
||||
|
||||
Contributors:
|
||||
Andrea Azzarone, Olivier Blin, Carlos Garnacho, Florian Müllner,
|
||||
Pascal Nowack, verdre
|
||||
|
||||
Translators:
|
||||
Bruno Lopes da Silva [pt_BR], Matej Urbančič [sl], Piotr Drąg [pl],
|
||||
Aurimas Černius [lt], Emin Tufan Çetin [tr], Fabio Tomat [fur],
|
||||
Alexandre Franke [fr], Yi-Jyun Pan [zh_TW], Bernd Homuth [de],
|
||||
Andre Klapper [cs], Jordi Mas [ca], Daniel Șerbănescu [ro],
|
||||
Bruce Cowan [en_GB]
|
||||
|
||||
3.29.90
|
||||
=======
|
||||
* Add remote access indication on wayland [Jonas; !160]
|
||||
* Fix wrong window positions in overview on wayland [Marco; #776588]
|
||||
* Add gesture to unfullscreen a window [Jan-Michael; !123]
|
||||
* Add PickColor method to screenshot D-Bus interface [Florian; #286]
|
||||
* Consider "new-window" action when opening new windows [Florian; #756844]
|
||||
* Make workspace switching gestures follow motion [Carlos; #788994]
|
||||
* Support audio volumes above 100% [Didier; #790280]
|
||||
* Misc. bug fixes [Florian, Daniel; #424, !132, !182, #433, !179, #786496]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Jan-Michael Brummer, Piotr Drąg, Daniel Drake, Carlos Garnacho,
|
||||
Florian Müllner, Georges Basile Stavracas Neto, Didier Roche, Jakub Steiner,
|
||||
Marco Trevisan (Treviño)
|
||||
|
||||
Translators:
|
||||
Charles Monzat [fr], Daniel Mustieles [es]
|
||||
|
||||
3.29.4
|
||||
======
|
||||
* Fix "Clear All" for calendar events [Florian; #325]
|
||||
|
@ -7,7 +7,7 @@ easy to use experience.
|
||||
|
||||
For more information about GNOME Shell, including instructions on how
|
||||
to build GNOME Shell from source and how to get involved with the project,
|
||||
see the [project wiki][wiki]
|
||||
see the [project wiki][project-wiki].
|
||||
|
||||
Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
|
||||
|
||||
|
@ -24,3 +24,9 @@
|
||||
|
||||
/* Define if _NL_TIME_FIRST_WEEKDATE is available */
|
||||
#mesondefine HAVE__NL_TIME_FIRST_WEEKDAY
|
||||
|
||||
/* Define if you have the `g_desktop_app_info_launch_uris_as_manager_with_fds` function */
|
||||
#mesondefine HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS
|
||||
|
||||
/* Define if fdwalk is available in libc */
|
||||
#mesondefine HAVE_FDWALK
|
||||
|
6
data/00_org.gnome.shell.gschema.override
Normal file
6
data/00_org.gnome.shell.gschema.override
Normal file
@ -0,0 +1,6 @@
|
||||
[org.gnome.mutter:GNOME]
|
||||
attach-modal-dialogs=true
|
||||
edge-tiling=true
|
||||
dynamic-workspaces=true
|
||||
workspaces-only-on-primary=true
|
||||
focus-change-on-pointer-rest=true
|
@ -22,6 +22,7 @@
|
||||
<file>id.json</file>
|
||||
<file>il.json</file>
|
||||
<file>in+bolnagri.json</file>
|
||||
<file>in+mal.json</file>
|
||||
<file>ir.json</file>
|
||||
<file>is.json</file>
|
||||
<file>it.json</file>
|
||||
|
5
data/gnome-shell-overrides-migration.desktop.in
Normal file
5
data/gnome-shell-overrides-migration.desktop.in
Normal file
@ -0,0 +1,5 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=GNOME settings overrides migration
|
||||
NoDisplay=true
|
||||
Exec=@libexecdir@/gnome-shell-overrides-migration.sh
|
@ -92,6 +92,16 @@ schema = configure_file(
|
||||
configuration: schemaconf,
|
||||
install_dir: schemadir
|
||||
)
|
||||
install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir)
|
||||
|
||||
overrides_migration_conf = configuration_data()
|
||||
overrides_migration_conf.set('libexecdir', libexecdir)
|
||||
overrides_migration = configure_file(
|
||||
input: 'gnome-shell-overrides-migration.desktop.in',
|
||||
output: 'gnome-shell-overrides-migration.desktop',
|
||||
configuration: overrides_migration_conf,
|
||||
install_dir: autostartdir
|
||||
)
|
||||
|
||||
if have_systemd
|
||||
unitconf = configuration_data()
|
||||
|
@ -91,6 +91,23 @@
|
||||
<arg type="s" direction="out" name="filename_used"/>
|
||||
</method>
|
||||
|
||||
<!--
|
||||
PickColor:
|
||||
|
||||
Picks a color and returns the result.
|
||||
|
||||
The @result vardict contains:
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>color (ddd)</term>
|
||||
<listitem><para>The color, RGB values in the range [0,1].</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
-->
|
||||
<method name="PickColor">
|
||||
<arg type="a{sv}" direction="out" name="result"/>
|
||||
</method>
|
||||
|
||||
<!--
|
||||
FlashArea:
|
||||
@x: the X coordinate of the area to flash
|
||||
|
@ -190,6 +190,7 @@
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
<!-- unused, change 00_org.gnome.shell.gschema.override instead -->
|
||||
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
|
||||
gettext-domain="@GETTEXT_PACKAGE@">
|
||||
<key name="attach-modal-dialogs" type="b">
|
||||
|
559
data/osk-layouts/in+mal.json
Normal file
559
data/osk-layouts/in+mal.json
Normal file
@ -0,0 +1,559 @@
|
||||
{
|
||||
"levels": [
|
||||
{
|
||||
"level": "",
|
||||
"mode": "default",
|
||||
"rows": [
|
||||
[
|
||||
[
|
||||
"െ"
|
||||
],
|
||||
[
|
||||
"ൌ"
|
||||
],
|
||||
[
|
||||
"ൈ"
|
||||
],
|
||||
[
|
||||
"ാ"
|
||||
],
|
||||
[
|
||||
"ീ"
|
||||
],
|
||||
[
|
||||
"ൂ"
|
||||
],
|
||||
[
|
||||
"ബ"
|
||||
],
|
||||
[
|
||||
"ഹ"
|
||||
],
|
||||
[
|
||||
"ഗ"
|
||||
],
|
||||
[
|
||||
"ദ"
|
||||
],
|
||||
[
|
||||
"ജ"
|
||||
],
|
||||
[
|
||||
"ഡ"
|
||||
],
|
||||
[
|
||||
""
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"ോ"
|
||||
],
|
||||
[
|
||||
"േ"
|
||||
],
|
||||
[
|
||||
"്"
|
||||
],
|
||||
[
|
||||
"ി"
|
||||
],
|
||||
[
|
||||
"ു"
|
||||
],
|
||||
[
|
||||
"പ"
|
||||
],
|
||||
[
|
||||
"ര"
|
||||
],
|
||||
[
|
||||
"ക"
|
||||
],
|
||||
[
|
||||
"ത"
|
||||
],
|
||||
[
|
||||
"ച"
|
||||
],
|
||||
[
|
||||
"ട"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"െ"
|
||||
],
|
||||
[
|
||||
"ം"
|
||||
],
|
||||
[
|
||||
"മ",
|
||||
"ç"
|
||||
],
|
||||
[
|
||||
"ന"
|
||||
],
|
||||
[
|
||||
"വ"
|
||||
],
|
||||
[
|
||||
"ല",
|
||||
"ñ"
|
||||
],
|
||||
[
|
||||
"സ"
|
||||
],
|
||||
[
|
||||
"ഷ"
|
||||
],
|
||||
[
|
||||
"യ"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
","
|
||||
],
|
||||
[
|
||||
" "
|
||||
],
|
||||
[
|
||||
".",
|
||||
"#",
|
||||
"!",
|
||||
",",
|
||||
"?",
|
||||
"-",
|
||||
":",
|
||||
"'",
|
||||
"@"
|
||||
]
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": "shift",
|
||||
"mode": "latched",
|
||||
"rows": [
|
||||
[
|
||||
[
|
||||
"ഔ"
|
||||
],
|
||||
[
|
||||
"ഐ"
|
||||
],
|
||||
[
|
||||
"ആ"
|
||||
],
|
||||
[
|
||||
"ഈ"
|
||||
],
|
||||
[
|
||||
"ഊ"
|
||||
],
|
||||
[
|
||||
"ഭ"
|
||||
],
|
||||
[
|
||||
"ങ"
|
||||
],
|
||||
[
|
||||
"ഘ"
|
||||
],
|
||||
[
|
||||
"ധ"
|
||||
],
|
||||
[
|
||||
"ഝ"
|
||||
],
|
||||
[
|
||||
"ഢ"
|
||||
],
|
||||
[
|
||||
"ഞ"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"ഓ"
|
||||
],
|
||||
[
|
||||
"ഏ"
|
||||
],
|
||||
[
|
||||
"അ"
|
||||
],
|
||||
[
|
||||
"ഇ"
|
||||
],
|
||||
[
|
||||
"ഉ"
|
||||
],
|
||||
[
|
||||
"ഫ"
|
||||
],
|
||||
[
|
||||
"റ"
|
||||
],
|
||||
[
|
||||
"ഖ"
|
||||
],
|
||||
[
|
||||
"ഥ"
|
||||
],
|
||||
[
|
||||
"ഛ"
|
||||
],
|
||||
[
|
||||
"ഠ"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"എ"
|
||||
],
|
||||
[
|
||||
""
|
||||
],
|
||||
[
|
||||
"ണ"
|
||||
],
|
||||
[
|
||||
"ന"
|
||||
],
|
||||
[
|
||||
"ഴ"
|
||||
],
|
||||
[
|
||||
"ള"
|
||||
],
|
||||
[
|
||||
"ശ"
|
||||
],
|
||||
[
|
||||
"ഷ"
|
||||
],
|
||||
[
|
||||
"യ"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
","
|
||||
],
|
||||
[
|
||||
" "
|
||||
],
|
||||
[
|
||||
".",
|
||||
"#",
|
||||
"!",
|
||||
",",
|
||||
"?",
|
||||
"-",
|
||||
":",
|
||||
"'",
|
||||
"@"
|
||||
]
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": "opt",
|
||||
"mode": "locked",
|
||||
"rows": [
|
||||
[
|
||||
[
|
||||
"൧",
|
||||
"1",
|
||||
"¹",
|
||||
"½",
|
||||
"⅓",
|
||||
"¼",
|
||||
"⅛"
|
||||
],
|
||||
[
|
||||
"൨",
|
||||
"2",
|
||||
"²",
|
||||
"⅔"
|
||||
],
|
||||
[
|
||||
"൩",
|
||||
"3",
|
||||
"³",
|
||||
"¾",
|
||||
"⅜"
|
||||
],
|
||||
[
|
||||
"൪",
|
||||
"4",
|
||||
"⁴"
|
||||
],
|
||||
[
|
||||
"൫",
|
||||
"5",
|
||||
"⅝"
|
||||
],
|
||||
[
|
||||
"൬",
|
||||
"6"
|
||||
],
|
||||
[
|
||||
"൭",
|
||||
"7",
|
||||
"⅞"
|
||||
],
|
||||
[
|
||||
"൮",
|
||||
"8"
|
||||
],
|
||||
[
|
||||
"൯",
|
||||
"9"
|
||||
],
|
||||
[
|
||||
"൦",
|
||||
"0",
|
||||
"ⁿ",
|
||||
"∅"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"@"
|
||||
],
|
||||
[
|
||||
"#"
|
||||
],
|
||||
[
|
||||
"₹",
|
||||
"$",
|
||||
"¢",
|
||||
"£",
|
||||
"€",
|
||||
"¥",
|
||||
"₱"
|
||||
],
|
||||
[
|
||||
"%",
|
||||
"‰"
|
||||
],
|
||||
[
|
||||
"&"
|
||||
],
|
||||
[
|
||||
"-",
|
||||
"_",
|
||||
"–",
|
||||
"—",
|
||||
"·"
|
||||
],
|
||||
[
|
||||
"+",
|
||||
"±"
|
||||
],
|
||||
[
|
||||
"(",
|
||||
"<",
|
||||
"{",
|
||||
"["
|
||||
],
|
||||
[
|
||||
")",
|
||||
">",
|
||||
"}",
|
||||
"]"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"*",
|
||||
"†",
|
||||
"‡",
|
||||
"★"
|
||||
],
|
||||
[
|
||||
"\"",
|
||||
"“",
|
||||
"”",
|
||||
"«",
|
||||
"»"
|
||||
],
|
||||
[
|
||||
"'",
|
||||
"‘",
|
||||
"’",
|
||||
"‹",
|
||||
"›"
|
||||
],
|
||||
[
|
||||
":"
|
||||
],
|
||||
[
|
||||
";"
|
||||
],
|
||||
[
|
||||
"!",
|
||||
"¡"
|
||||
],
|
||||
[
|
||||
"?",
|
||||
"¿"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"_"
|
||||
],
|
||||
[
|
||||
"/"
|
||||
],
|
||||
[
|
||||
" "
|
||||
],
|
||||
[
|
||||
","
|
||||
],
|
||||
[
|
||||
".",
|
||||
"…"
|
||||
]
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": "opt+shift",
|
||||
"mode": "locked",
|
||||
"rows": [
|
||||
[
|
||||
[
|
||||
"~"
|
||||
],
|
||||
[
|
||||
"`"
|
||||
],
|
||||
[
|
||||
"|"
|
||||
],
|
||||
[
|
||||
"•",
|
||||
"♪",
|
||||
"♥",
|
||||
"♠",
|
||||
"♦",
|
||||
"♣"
|
||||
],
|
||||
[
|
||||
"√"
|
||||
],
|
||||
[
|
||||
"Π",
|
||||
"π"
|
||||
],
|
||||
[
|
||||
"÷"
|
||||
],
|
||||
[
|
||||
"×"
|
||||
],
|
||||
[
|
||||
"¶",
|
||||
"§"
|
||||
],
|
||||
[
|
||||
"∆"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"£"
|
||||
],
|
||||
[
|
||||
"¢"
|
||||
],
|
||||
[
|
||||
"€"
|
||||
],
|
||||
[
|
||||
"¥"
|
||||
],
|
||||
[
|
||||
"^",
|
||||
"↑",
|
||||
"↓",
|
||||
"←",
|
||||
"→"
|
||||
],
|
||||
[
|
||||
"°",
|
||||
"′",
|
||||
"″"
|
||||
],
|
||||
[
|
||||
"=",
|
||||
"≠",
|
||||
"≈",
|
||||
"∞"
|
||||
],
|
||||
[
|
||||
"{"
|
||||
],
|
||||
[
|
||||
"}"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"\\"
|
||||
],
|
||||
[
|
||||
"©"
|
||||
],
|
||||
[
|
||||
"®"
|
||||
],
|
||||
[
|
||||
"™"
|
||||
],
|
||||
[
|
||||
"℅"
|
||||
],
|
||||
[
|
||||
"["
|
||||
],
|
||||
[
|
||||
"]"
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
"<",
|
||||
"‹",
|
||||
"≤",
|
||||
"«"
|
||||
],
|
||||
[
|
||||
">",
|
||||
"›",
|
||||
"≥",
|
||||
"»"
|
||||
],
|
||||
[
|
||||
" "
|
||||
],
|
||||
[
|
||||
","
|
||||
],
|
||||
[
|
||||
".",
|
||||
"…"
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
"locale": "ml",
|
||||
"name": "Malayalam"
|
||||
}
|
@ -128,12 +128,15 @@ StScrollBar {
|
||||
|
||||
.slider {
|
||||
height: 1em;
|
||||
-slider-height: 0.3em;
|
||||
-slider-background-color: $insensitive_bg_color; //background of the trough
|
||||
-slider-border-color: $borders_color; //trough border color
|
||||
-slider-active-background-color: $selected_bg_color; //active trough fill
|
||||
-slider-active-border-color: darken($selected_bg_color,10%); //active trough border
|
||||
-slider-border-width: 1px;
|
||||
-barlevel-height: 0.3em;
|
||||
-barlevel-background-color: $insensitive_bg_color; //background of the trough
|
||||
-barlevel-border-color: $borders_color; //trough border color
|
||||
-barlevel-active-background-color: $selected_bg_color; //active trough fill
|
||||
-barlevel-active-border-color: darken($selected_bg_color,10%); //active trough border
|
||||
-barlevel-overdrive-color: $destructive_color;
|
||||
-barlevel-overdrive-border-color: darken($destructive_color,10%);
|
||||
-barlevel-overdrive-separator-width: 0.2em;
|
||||
-barlevel-border-width: 1px;
|
||||
-slider-handle-radius: 6px;
|
||||
}
|
||||
|
||||
@ -585,13 +588,11 @@ StScrollBar {
|
||||
.osd-monitor-label { font-size: 3em; }
|
||||
.level {
|
||||
height: 0.6em;
|
||||
border-radius: 0.3em;
|
||||
background-color: transparentize(darken($osd_bg_color,15%),0.5);
|
||||
color: $osd_fg_color;
|
||||
}
|
||||
.level-bar {
|
||||
background-color: $osd_fg_color;
|
||||
border-radius: 0.3em;
|
||||
-barlevel-height: 0.6em;
|
||||
-barlevel-background-color: transparentize(darken($osd_bg_color,15%),0.5);
|
||||
-barlevel-active-background-color: $osd_fg_color;
|
||||
-barlevel-overdrive-color: $destructive_color;
|
||||
-barlevel-overdrive-separator-width: 0.2em;
|
||||
}
|
||||
}
|
||||
|
||||
@ -825,6 +826,8 @@ StScrollBar {
|
||||
|
||||
.screencast-indicator { color: $warning_color; }
|
||||
|
||||
.remote-access-indicator { color: $warning_color; }
|
||||
|
||||
&.solid {
|
||||
background-color: black;
|
||||
/* transition from transparent to solid */
|
||||
@ -1122,6 +1125,7 @@ StScrollBar {
|
||||
}
|
||||
|
||||
.system-menu-action {
|
||||
-st-icon-style: symbolic;
|
||||
color: $fg_color;
|
||||
border-radius: 32px; /* wish we could do 50% */
|
||||
padding: 13px;
|
||||
|
@ -14,7 +14,7 @@
|
||||
id="svg7384"
|
||||
height="32"
|
||||
sodipodi:docname="key-layout.svg"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
@ -24,17 +24,21 @@
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1919"
|
||||
inkscape:window-height="1011"
|
||||
inkscape:window-width="3440"
|
||||
inkscape:window-height="1376"
|
||||
id="namedview19"
|
||||
showgrid="false"
|
||||
inkscape:zoom="14.75"
|
||||
inkscape:cx="1.220339"
|
||||
inkscape:cy="11.842802"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="46.246852"
|
||||
inkscape:cy="17.474578"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg7384" />
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg7384">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid861" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata90">
|
||||
<rdf:RDF>
|
||||
@ -92,23 +96,34 @@
|
||||
style="display:inline"
|
||||
id="g4953" />
|
||||
<g
|
||||
style="stroke-width:0.5;enable-background:new"
|
||||
id="g3561"
|
||||
inkscape:label="preferences-desktop-locale"
|
||||
id="g11728"
|
||||
transform="matrix(2,0,0,2,-522.0004,-1086)"
|
||||
style="display:inline;stroke-width:1">
|
||||
<rect
|
||||
style="fill:none;stroke:none;stroke-width:1"
|
||||
id="rect11724"
|
||||
width="16"
|
||||
height="16"
|
||||
x="20"
|
||||
y="326"
|
||||
transform="translate(241.0002,217)" />
|
||||
transform="matrix(2,0,0,2,135.99464,-895.9793)">
|
||||
<path
|
||||
style="fill:#e5e5e5;fill-opacity:1;stroke:none;stroke-width:1"
|
||||
d="m 265.69612,545.23396 c -3.58218,0 -4.66582,1.39975 -4.66582,1.39975 v 10.04946 c 0,0 1.08364,-1.07673 4.66582,-1.07673 2.9161,0 4.47225,1.07673 7.17818,1.07673 2.08923,0 3.19429,-1.39975 3.19429,-1.39975 v -10.04946 c 0,0 -1.14095,1.04084 -3.23018,1.04084 -3.3734,0 -3.97619,-1.04084 -7.14229,-1.04084 z m 2.93145,2.77148 c 1.32876,0 2.375,1.08037 2.375,2.4375 0,1.35713 -1.04624,2.46875 -2.375,2.46875 -1.32876,0 -2.40625,-1.11162 -2.40625,-2.46875 0,-1.35713 1.07749,-2.4375 2.40625,-2.4375 z m -4.5625,0.96875 0.96875,1.03125 -0.9375,-0.0312 0.9375,1 -0.96875,-0.0312 0.96875,1.03125 -1,-0.0312 0.0312,-1 h -0.0312 l 0.0312,-0.9688 h -0.0312 z m 4.5625,0 c -0.794,0 -1.46875,0.6578 -1.46875,1.46875 0,0.81095 0.67475,1.46875 1.46875,1.46875 0.79399,0 1.4375,-0.6578 1.4375,-1.46875 0,-0.81095 -0.64351,-1.46875 -1.4375,-1.46875 z m 4.375,0 v 1 l 0.0312,0.96875 h -0.0312 l 0.0312,1 -1,0.0312 0.96875,-1.03125 -0.96875,0.0312 0.9375,-1 -0.9375,0.0312 z m -7.9375,2.96875 0.96875,1.03125 -1,-0.0312 z m 6.9375,0 0.0312,1 -1,0.0312 z m -5.9375,1 0.96875,1.03125 -1,-0.0312 z m 4.9375,0 0.0312,1 -1,0.0312 z"
|
||||
id="path11726"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sccssccsssssssccccccccccccsssssccccccccccccccccccccccccccc" />
|
||||
id="path3535"
|
||||
d="m -65,450 v 12"
|
||||
style="fill:#e5e5e5;fill-opacity:1;fill-rule:evenodd;stroke:#e5e5e5;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3537"
|
||||
d="m -65,456 h 4 l 1,2 h 5 v -6 h -4 l -1,-2 h -5 z"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#e5e5e5;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:1;vector-effect:none;fill:#e5e5e5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m -65,456 h 4 l 1,2 h 5 v -6 h -4 l -1,-2 h -5 z"
|
||||
id="path3539"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<rect
|
||||
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:0.89050001;marker:none;enable-background:new"
|
||||
id="rect3543"
|
||||
y="448"
|
||||
x="-68"
|
||||
height="16"
|
||||
width="16" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.2 KiB |
@ -13,10 +13,102 @@
|
||||
height="64px"
|
||||
id="svg3393"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="New document 2">
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="no-notifications.svg">
|
||||
<defs
|
||||
id="defs3395" />
|
||||
id="defs3395">
|
||||
<clipPath
|
||||
id="clipPath6262-0"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none"
|
||||
id="rect6264-6"
|
||||
width="3.8250003"
|
||||
height="6.3750005"
|
||||
x="26.849981"
|
||||
y="220.75" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipPath6258-0"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none"
|
||||
id="rect6260-6"
|
||||
width="2.8977275"
|
||||
height="5.3129687"
|
||||
x="26.965673"
|
||||
y="221.28162" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipPath6254-6"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none"
|
||||
id="rect6256-6"
|
||||
width="1.876245"
|
||||
height="4.8783236"
|
||||
x="26.998718"
|
||||
y="221.50153" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipPath8028-3"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -73,-30 -7,-7 v -4.5 h 16.5 v 4.5 l -7.5,7 z"
|
||||
id="path8030-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath6810-7-87-7">
|
||||
<rect
|
||||
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
|
||||
id="rect6812-2-4-5"
|
||||
width="14"
|
||||
height="11"
|
||||
x="21"
|
||||
y="281" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipPath6262"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none"
|
||||
id="rect6264"
|
||||
width="3.8250003"
|
||||
height="6.3750005"
|
||||
x="26.849981"
|
||||
y="220.75" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipPath6258"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none"
|
||||
id="rect6260"
|
||||
width="2.8977275"
|
||||
height="5.3129687"
|
||||
x="26.965673"
|
||||
y="221.28162" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipPath6254"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none"
|
||||
id="rect6256"
|
||||
width="1.876245"
|
||||
height="4.8783236"
|
||||
x="26.998718"
|
||||
y="221.50153" />
|
||||
</clipPath>
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect3951"
|
||||
is_visible="true" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
@ -24,17 +116,17 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="32"
|
||||
inkscape:cy="32"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="125.08157"
|
||||
inkscape:cy="-13.805087"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="697"
|
||||
inkscape:window-height="613"
|
||||
inkscape:window-x="100"
|
||||
inkscape:window-y="77"
|
||||
inkscape:window-width="1664"
|
||||
inkscape:window-height="1034"
|
||||
inkscape:window-x="1479"
|
||||
inkscape:window-y="252"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3398">
|
||||
@ -54,7 +146,7 @@
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
style="display:inline"
|
||||
transform="matrix(4,0,0,4,0.29733827,-0.35415646)"
|
||||
transform="matrix(4,0,0,4,-79.702662,-0.35415646)"
|
||||
id="g19245">
|
||||
<g
|
||||
id="g19247"
|
||||
@ -71,15 +163,15 @@
|
||||
transform="translate(-323.02908,-649.02581)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 331.9377,653 c 0.0187,0.16677 0.0625,0.32822 0.0625,0.5 0,2.48528 -2.01472,4.5 -4.5,4.5 -0.11769,0 -0.22834,-0.0224 -0.34375,-0.0312 l 0,2.21875 c 0,1.00412 0.80838,1.8125 1.8125,1.8125 l 1.54511,-5e-5 2,2.04688 2.0625,-2.04688 1.61114,0 c 1.00413,0 1.8125,-0.80838 1.8125,-1.8125 l 0,-5.375 c 0,-1.00412 -0.80837,-1.8125 -1.8125,-1.8125 z"
|
||||
d="m 331.9377,653 c 0.0187,0.16677 0.0625,0.32822 0.0625,0.5 0,2.48528 -2.01472,4.5 -4.5,4.5 -0.11769,0 -0.22834,-0.0224 -0.34375,-0.0312 v 2.21875 c 0,1.00412 0.80838,1.8125 1.8125,1.8125 l 1.54511,-5e-5 2,2.04688 2.0625,-2.04688 h 1.61114 c 1.00413,0 1.8125,-0.80838 1.8125,-1.8125 v -5.375 c 0,-1.00412 -0.80837,-1.8125 -1.8125,-1.8125 z"
|
||||
id="path19253"
|
||||
sodipodi:nodetypes="csscsscccssssc"
|
||||
style="opacity:0.5;color:#000000;fill:#c3c3c3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#c3c3c3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 327.5002,650 c -1.933,0 -3.5,1.567 -3.5,3.5 0,1.933 1.567,3.5 3.5,3.5 1.933,0 3.5,-1.567 3.5,-3.5 0,-1.933 -1.567,-3.5 -3.5,-3.5 z m -0.53125,1 1.03125,0 -0.0625,1.375 a 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.125,0.125 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 l 1.15625,-0.75 0.5,0.90625 -1.21875,0.625 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0.0937 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0625 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0312 l 1.25,0.625 -0.53125,0.90625 -1.15625,-0.781 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,0 0.19951718,0.19951718 0 0 0 -0.125,0.0937 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0,0.0625 l 0.0625,1.3751 -1.03125,0 0.0937,-1.375 a 0.19951718,0.19951718 0 0 0 -0.0312,-0.0937 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0937,0.0312 l -1.1875,0.78125 -0.5,-0.90625 1.25,-0.625 a 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0312,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 l -1.25,-0.625 0.5,-0.90625 1.1875,0.75 a 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 L 326.96895,651 z"
|
||||
d="m 327.5002,650 c -1.933,0 -3.5,1.567 -3.5,3.5 0,1.933 1.567,3.5 3.5,3.5 1.933,0 3.5,-1.567 3.5,-3.5 0,-1.933 -1.567,-3.5 -3.5,-3.5 z m -0.53125,1 h 1.03125 l -0.0625,1.375 a 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.125,0.125 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 l 1.15625,-0.75 0.5,0.90625 -1.21875,0.625 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0.0937 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0625 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0312 l 1.25,0.625 -0.53125,0.90625 -1.15625,-0.781 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,0 0.19951718,0.19951718 0 0 0 -0.125,0.0937 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0,0.0625 L 328.0002,656 h -1.03125 l 0.0937,-1.375 a 0.19951718,0.19951718 0 0 0 -0.0312,-0.0937 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0937,0.0312 l -1.1875,0.78125 -0.5,-0.90625 1.25,-0.625 a 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0312,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 l -1.25,-0.625 0.5,-0.90625 1.1875,0.75 a 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 z"
|
||||
id="path19255"
|
||||
style="color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;enable-background:accumulate" />
|
||||
</g>
|
||||
<g
|
||||
id="g19257"
|
||||
@ -110,5 +202,22 @@
|
||||
style="display:inline"
|
||||
transform="translate(-323.02908,-649.02581)" />
|
||||
</g>
|
||||
<g
|
||||
style="opacity:1;vector-effect:none;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:new"
|
||||
inkscape:label="preferences-system-notifications"
|
||||
id="g13967"
|
||||
transform="matrix(4,0,0,4,-1044.0008,-2172)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 268.94244,544.94838 c -2.20914,0 -3.33013,1.5 -4,4 l -1,5 c -0.10831,0.54156 -0.44772,1 -1,1 v 1 h 12 v -1 c -0.55229,0 -0.89169,-0.45844 -1,-1 l -1,-5 c -0.53033,-2.5 -1.79086,-4 -4,-4 z"
|
||||
id="path40220"
|
||||
sodipodi:nodetypes="ccsccccscc"
|
||||
style="opacity:1;vector-effect:none;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 269.11822,556.94838 a 1.5,1.5 0 0 0 1.41211,1 1.5,1.5 0 0 0 1.41211,-1 z"
|
||||
id="path40774"
|
||||
style="opacity:1;vector-effect:none;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 11 KiB |
@ -50,8 +50,7 @@ gnome.gtkdoc('shell',
|
||||
join_paths(meson.build_root(), 'src')
|
||||
],
|
||||
scan_args: [
|
||||
'--ignore-headers=' + ' '.join(private_headers + exclude_directories),
|
||||
'--rebuild-types'
|
||||
'--ignore-headers=' + ' '.join(private_headers + exclude_directories)
|
||||
],
|
||||
install: true
|
||||
)
|
||||
|
@ -17,8 +17,7 @@ gnome.gtkdoc('st',
|
||||
],
|
||||
scan_args: [
|
||||
'--ignore-headers=' + ' '.join(private_headers),
|
||||
'--rebuild-sections',
|
||||
'--rebuild-types'
|
||||
'--rebuild-sections'
|
||||
],
|
||||
install: true
|
||||
)
|
||||
|
@ -14,15 +14,16 @@ const _ = Gettext.gettext;
|
||||
const Config = imports.misc.config;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
|
||||
const GnomeShellIface = '<node> \
|
||||
<interface name="org.gnome.Shell.Extensions"> \
|
||||
<signal name="ExtensionStatusChanged"> \
|
||||
<arg type="s" name="uuid"/> \
|
||||
<arg type="i" name="state"/> \
|
||||
<arg type="s" name="error"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const GnomeShellIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.Extensions">
|
||||
<signal name="ExtensionStatusChanged">
|
||||
<arg type="s" name="uuid"/>
|
||||
<arg type="i" name="state"/>
|
||||
<arg type="s" name="error"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
|
||||
|
||||
|
@ -242,11 +242,11 @@ var AuthPrompt = new Lang.Class({
|
||||
this.emit('prompted');
|
||||
},
|
||||
|
||||
_onVerificationFailed() {
|
||||
_onVerificationFailed(userVerifier, canRetry) {
|
||||
this._queryingService = null;
|
||||
this.clear();
|
||||
|
||||
this.updateSensitivity(true);
|
||||
this.updateSensitivity(canRetry);
|
||||
this.setActorInDefaultButtonWell(null);
|
||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED;
|
||||
},
|
||||
@ -439,6 +439,7 @@ var AuthPrompt = new Lang.Class({
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
this.cancelButton.reactive = true;
|
||||
this.nextButton.label = _("Next");
|
||||
this._preemptiveAnswer = null;
|
||||
|
||||
if (this._userVerifier)
|
||||
this._userVerifier.cancel();
|
||||
|
@ -5,13 +5,14 @@ const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const FprintManagerIface = '<node> \
|
||||
<interface name="net.reactivated.Fprint.Manager"> \
|
||||
<method name="GetDefaultDevice"> \
|
||||
<arg type="o" direction="out" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const FprintManagerIface = `
|
||||
<node>
|
||||
<interface name="net.reactivated.Fprint.Manager">
|
||||
<method name="GetDefaultDevice">
|
||||
<arg type="o" direction="out" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface);
|
||||
|
||||
|
@ -4,13 +4,14 @@ const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const OVirtCredentialsIface = '<node> \
|
||||
<interface name="org.ovirt.vdsm.Credentials"> \
|
||||
<signal name="UserAuthenticated"> \
|
||||
<arg type="s" name="token"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const OVirtCredentialsIface = `
|
||||
<node>
|
||||
<interface name="org.ovirt.vdsm.Credentials">
|
||||
<signal name="UserAuthenticated">
|
||||
<arg type="s" name="token"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const OVirtCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(OVirtCredentialsIface);
|
||||
|
||||
|
@ -5,58 +5,61 @@ const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const ProviderIface = '<node> \
|
||||
<interface name="org.freedesktop.realmd.Provider"> \
|
||||
<property name="Name" type="s" access="read"/> \
|
||||
<property name="Version" type="s" access="read"/> \
|
||||
<property name="Realms" type="ao" access="read"/> \
|
||||
<method name="Discover"> \
|
||||
<arg name="string" type="s" direction="in"/> \
|
||||
<arg name="options" type="a{sv}" direction="in"/> \
|
||||
<arg name="relevance" type="i" direction="out"/> \
|
||||
<arg name="realm" type="ao" direction="out"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ProviderIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.realmd.Provider">
|
||||
<property name="Name" type="s" access="read"/>
|
||||
<property name="Version" type="s" access="read"/>
|
||||
<property name="Realms" type="ao" access="read"/>
|
||||
<method name="Discover">
|
||||
<arg name="string" type="s" direction="in"/>
|
||||
<arg name="options" type="a{sv}" direction="in"/>
|
||||
<arg name="relevance" type="i" direction="out"/>
|
||||
<arg name="realm" type="ao" direction="out"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface);
|
||||
|
||||
const ServiceIface = '<node> \
|
||||
<interface name="org.freedesktop.realmd.Service"> \
|
||||
<method name="Cancel"> \
|
||||
<arg name="operation" type="s" direction="in"/> \
|
||||
</method> \
|
||||
<method name="Release" /> \
|
||||
<method name="SetLocale"> \
|
||||
<arg name="locale" type="s" direction="in"/> \
|
||||
</method> \
|
||||
<signal name="Diagnostics"> \
|
||||
<arg name="data" type="s"/> \
|
||||
<arg name="operation" type="s"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ServiceIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.realmd.Service">
|
||||
<method name="Cancel">
|
||||
<arg name="operation" type="s" direction="in"/>
|
||||
</method>
|
||||
<method name="Release" />
|
||||
<method name="SetLocale">
|
||||
<arg name="locale" type="s" direction="in"/>
|
||||
</method>
|
||||
<signal name="Diagnostics">
|
||||
<arg name="data" type="s"/>
|
||||
<arg name="operation" type="s"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface);
|
||||
|
||||
const RealmIface = '<node> \
|
||||
<interface name="org.freedesktop.realmd.Realm"> \
|
||||
<property name="Name" type="s" access="read"/> \
|
||||
<property name="Configured" type="s" access="read"/> \
|
||||
<property name="Details" type="a(ss)" access="read"/> \
|
||||
<property name="LoginFormats" type="as" access="read"/> \
|
||||
<property name="LoginPolicy" type="s" access="read"/> \
|
||||
<property name="PermittedLogins" type="as" access="read"/> \
|
||||
<property name="SupportedInterfaces" type="as" access="read"/> \
|
||||
<method name="ChangeLoginPolicy"> \
|
||||
<arg name="login_policy" type="s" direction="in"/> \
|
||||
<arg name="permitted_add" type="as" direction="in"/> \
|
||||
<arg name="permitted_remove" type="as" direction="in"/> \
|
||||
<arg name="options" type="a{sv}" direction="in"/> \
|
||||
</method> \
|
||||
<method name="Deconfigure"> \
|
||||
<arg name="options" type="a{sv}" direction="in"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const RealmIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.realmd.Realm">
|
||||
<property name="Name" type="s" access="read"/>
|
||||
<property name="Configured" type="s" access="read"/>
|
||||
<property name="Details" type="a(ss)" access="read"/>
|
||||
<property name="LoginFormats" type="as" access="read"/>
|
||||
<property name="LoginPolicy" type="s" access="read"/>
|
||||
<property name="PermittedLogins" type="as" access="read"/>
|
||||
<property name="SupportedInterfaces" type="as" access="read"/>
|
||||
<method name="ChangeLoginPolicy">
|
||||
<arg name="login_policy" type="s" direction="in"/>
|
||||
<arg name="permitted_add" type="as" direction="in"/>
|
||||
<arg name="permitted_remove" type="as" direction="in"/>
|
||||
<arg name="options" type="a{sv}" direction="in"/>
|
||||
</method>
|
||||
<method name="Deconfigure">
|
||||
<arg name="options" type="a{sv}" direction="in"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface);
|
||||
|
||||
var Manager = new Lang.Class({
|
||||
|
@ -537,12 +537,13 @@ var ShellUserVerifier = new Lang.Class({
|
||||
_verificationFailed(retry) {
|
||||
// For Not Listed / enterprise logins, immediately reset
|
||||
// the dialog
|
||||
// Otherwise, we allow ALLOWED_FAILURES attempts. After that, we
|
||||
// go back to the welcome screen.
|
||||
// Otherwise, when in login mode we allow ALLOWED_FAILURES attempts.
|
||||
// After that, we go back to the welcome screen.
|
||||
|
||||
this._failCounter++;
|
||||
let canRetry = retry && this._userName &&
|
||||
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY);
|
||||
(this._reauthOnly ||
|
||||
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY));
|
||||
|
||||
if (canRetry) {
|
||||
if (!this.hasPendingMessages) {
|
||||
@ -565,7 +566,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
}
|
||||
|
||||
this.emit('verification-failed');
|
||||
this.emit('verification-failed', canRetry);
|
||||
},
|
||||
|
||||
_onConversationStopped(client, serviceName) {
|
||||
|
@ -9,8 +9,6 @@
|
||||
<file>gdm/realmd.js</file>
|
||||
<file>gdm/util.js</file>
|
||||
|
||||
<file>extensionPrefs/main.js</file>
|
||||
|
||||
<file>misc/config.js</file>
|
||||
<file>misc/extensionUtils.js</file>
|
||||
<file>misc/fileUtils.js</file>
|
||||
@ -33,8 +31,6 @@
|
||||
<file>perf/core.js</file>
|
||||
<file>perf/hwtest.js</file>
|
||||
|
||||
<file>portalHelper/main.js</file>
|
||||
|
||||
<file>ui/accessDialog.js</file>
|
||||
<file>ui/altTab.js</file>
|
||||
<file>ui/animation.js</file>
|
||||
@ -43,6 +39,7 @@
|
||||
<file>ui/audioDeviceSelection.js</file>
|
||||
<file>ui/backgroundMenu.js</file>
|
||||
<file>ui/background.js</file>
|
||||
<file>ui/barLevel.js</file>
|
||||
<file>ui/boxpointer.js</file>
|
||||
<file>ui/calendar.js</file>
|
||||
<file>ui/checkBox.js</file>
|
||||
@ -130,6 +127,7 @@
|
||||
<file>ui/status/rfkill.js</file>
|
||||
<file>ui/status/volume.js</file>
|
||||
<file>ui/status/bluetooth.js</file>
|
||||
<file>ui/status/remoteAccess.js</file>
|
||||
<file>ui/status/screencast.js</file>
|
||||
<file>ui/status/system.js</file>
|
||||
<file>ui/status/thunderbolt.js</file>
|
||||
|
@ -6,3 +6,17 @@ js_resources = gnome.compile_resources(
|
||||
c_name: 'shell_js_resources',
|
||||
dependencies: [config_js]
|
||||
)
|
||||
|
||||
portal_resources = gnome.compile_resources(
|
||||
'portal-resources', 'portal-resources.gresource.xml',
|
||||
source_dir: ['.', meson.current_build_dir()],
|
||||
c_name: 'portal_js_resources',
|
||||
dependencies: [config_js]
|
||||
)
|
||||
|
||||
prefs_resources = gnome.compile_resources(
|
||||
'prefs-resources', 'prefs-resources.gresource.xml',
|
||||
source_dir: ['.', meson.current_build_dir()],
|
||||
c_name: 'prefs_js_resources',
|
||||
dependencies: [config_js]
|
||||
)
|
||||
|
@ -112,6 +112,8 @@ function createExtensionObject(uuid, dir, type) {
|
||||
let metadataContents, success, tag;
|
||||
try {
|
||||
[success, metadataContents, tag] = metadataFile.load_contents(null);
|
||||
if (metadataContents instanceof Uint8Array)
|
||||
metadataContents = imports.byteArray.toString(metadataContents);
|
||||
} catch (e) {
|
||||
throw new Error('Failed to load metadata.json: ' + e);
|
||||
}
|
||||
|
@ -4,17 +4,18 @@ const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const PresenceIface = '<node> \
|
||||
<interface name="org.gnome.SessionManager.Presence"> \
|
||||
<method name="SetStatus"> \
|
||||
<arg type="u" direction="in"/> \
|
||||
</method> \
|
||||
<property name="status" type="u" access="readwrite"/> \
|
||||
<signal name="StatusChanged"> \
|
||||
<arg type="u" direction="out"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const PresenceIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SessionManager.Presence">
|
||||
<method name="SetStatus">
|
||||
<arg type="u" direction="in"/>
|
||||
</method>
|
||||
<property name="status" type="u" access="readwrite"/>
|
||||
<signal name="StatusChanged">
|
||||
<arg type="u" direction="out"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var PresenceStatus = {
|
||||
AVAILABLE: 0,
|
||||
@ -32,16 +33,17 @@ function Presence(initCallback, cancellable) {
|
||||
// Note inhibitors are immutable objects, so they don't
|
||||
// change at runtime (changes always come in the form
|
||||
// of new inhibitors)
|
||||
const InhibitorIface = '<node> \
|
||||
<interface name="org.gnome.SessionManager.Inhibitor"> \
|
||||
<method name="GetAppId"> \
|
||||
<arg type="s" direction="out" /> \
|
||||
</method> \
|
||||
<method name="GetReason"> \
|
||||
<arg type="s" direction="out" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const InhibitorIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SessionManager.Inhibitor">
|
||||
<method name="GetAppId">
|
||||
<arg type="s" direction="out" />
|
||||
</method>
|
||||
<method name="GetReason">
|
||||
<arg type="s" direction="out" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
|
||||
function Inhibitor(objectPath, initCallback, cancellable) {
|
||||
@ -49,29 +51,30 @@ function Inhibitor(objectPath, initCallback, cancellable) {
|
||||
}
|
||||
|
||||
// Not the full interface, only the methods we use
|
||||
const SessionManagerIface = '<node> \
|
||||
<interface name="org.gnome.SessionManager"> \
|
||||
<method name="Logout"> \
|
||||
<arg type="u" direction="in" /> \
|
||||
</method> \
|
||||
<method name="Shutdown" /> \
|
||||
<method name="Reboot" /> \
|
||||
<method name="CanShutdown"> \
|
||||
<arg type="b" direction="out" /> \
|
||||
</method> \
|
||||
<method name="IsInhibited"> \
|
||||
<arg type="u" direction="in" /> \
|
||||
<arg type="b" direction="out" /> \
|
||||
</method> \
|
||||
<property name="SessionIsActive" type="b" access="read"/> \
|
||||
<signal name="InhibitorAdded"> \
|
||||
<arg type="o" direction="out"/> \
|
||||
</signal> \
|
||||
<signal name="InhibitorRemoved"> \
|
||||
<arg type="o" direction="out"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SessionManagerIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SessionManager">
|
||||
<method name="Logout">
|
||||
<arg type="u" direction="in" />
|
||||
</method>
|
||||
<method name="Shutdown" />
|
||||
<method name="Reboot" />
|
||||
<method name="CanShutdown">
|
||||
<arg type="b" direction="out" />
|
||||
</method>
|
||||
<method name="IsInhibited">
|
||||
<arg type="u" direction="in" />
|
||||
<arg type="b" direction="out" />
|
||||
</method>
|
||||
<property name="SessionIsActive" type="b" access="read"/>
|
||||
<signal name="InhibitorAdded">
|
||||
<arg type="o" direction="out"/>
|
||||
</signal>
|
||||
<signal name="InhibitorRemoved">
|
||||
<arg type="o" direction="out"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface);
|
||||
function SessionManager(initCallback, cancellable) {
|
||||
|
@ -17,6 +17,8 @@ var InputMethod = new Lang.Class({
|
||||
this._currentFocus = null;
|
||||
this._currentEvent = null;
|
||||
this._doForwardEvent = false;
|
||||
this._preeditStr = '';
|
||||
this._preeditPos = 0;
|
||||
this._ibus = IBus.Bus.new_async();
|
||||
this._ibus.connect('connected', this._onConnected.bind(this));
|
||||
this._ibus.connect('disconnected', this._clear.bind(this));
|
||||
@ -69,6 +71,8 @@ var InputMethod = new Lang.Class({
|
||||
this._context.connect('commit-text', this._onCommitText.bind(this));
|
||||
this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this));
|
||||
this._context.connect('update-preedit-text', this._onUpdatePreeditText.bind(this));
|
||||
this._context.connect('show-preedit-text', this._onShowPreeditText.bind(this));
|
||||
this._context.connect('hide-preedit-text', this._onHidePreeditText.bind(this));
|
||||
this._context.connect('forward-key-event', this._onForwardKeyEvent.bind(this));
|
||||
|
||||
this._updateCapabilities();
|
||||
@ -79,6 +83,8 @@ var InputMethod = new Lang.Class({
|
||||
this._hints = 0;
|
||||
this._purpose = 0;
|
||||
this._enabled = false;
|
||||
this._preeditStr = ''
|
||||
this._preeditPos = 0;
|
||||
},
|
||||
|
||||
_emitRequestSurrounding() {
|
||||
@ -95,11 +101,22 @@ var InputMethod = new Lang.Class({
|
||||
},
|
||||
|
||||
_onUpdatePreeditText(context, text, pos, visible) {
|
||||
let str = null;
|
||||
if (visible && text != null)
|
||||
str = text.get_text();
|
||||
if (text == null)
|
||||
return;
|
||||
this._preeditStr = text.get_text();
|
||||
this._preeditPos = pos;
|
||||
if (visible)
|
||||
this.set_preedit_text(this._preeditStr, pos);
|
||||
else
|
||||
this.set_preedit_text(null, pos);
|
||||
},
|
||||
|
||||
this.set_preedit_text(str, pos);
|
||||
_onShowPreeditText(context) {
|
||||
this.set_preedit_text(this._preeditStr, this._preeditPos);
|
||||
},
|
||||
|
||||
_onHidePreeditText(context) {
|
||||
this.set_preedit_text(null, this._preeditPos);
|
||||
},
|
||||
|
||||
_onForwardKeyEvent(context, keyval, keycode, state) {
|
||||
|
@ -7,53 +7,56 @@ const Mainloop = imports.mainloop;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const SystemdLoginManagerIface = '<node> \
|
||||
<interface name="org.freedesktop.login1.Manager"> \
|
||||
<method name="Suspend"> \
|
||||
<arg type="b" direction="in"/> \
|
||||
</method> \
|
||||
<method name="CanSuspend"> \
|
||||
<arg type="s" direction="out"/> \
|
||||
</method> \
|
||||
<method name="Inhibit"> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="h" direction="out"/> \
|
||||
</method> \
|
||||
<method name="GetSession"> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="o" direction="out"/> \
|
||||
</method> \
|
||||
<method name="ListSessions"> \
|
||||
<arg name="sessions" type="a(susso)" direction="out"/> \
|
||||
</method> \
|
||||
<signal name="PrepareForSleep"> \
|
||||
<arg type="b" direction="out"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SystemdLoginManagerIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.login1.Manager">
|
||||
<method name="Suspend">
|
||||
<arg type="b" direction="in"/>
|
||||
</method>
|
||||
<method name="CanSuspend">
|
||||
<arg type="s" direction="out"/>
|
||||
</method>
|
||||
<method name="Inhibit">
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="h" direction="out"/>
|
||||
</method>
|
||||
<method name="GetSession">
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="o" direction="out"/>
|
||||
</method>
|
||||
<method name="ListSessions">
|
||||
<arg name="sessions" type="a(susso)" direction="out"/>
|
||||
</method>
|
||||
<signal name="PrepareForSleep">
|
||||
<arg type="b" direction="out"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const SystemdLoginSessionIface = '<node> \
|
||||
<interface name="org.freedesktop.login1.Session"> \
|
||||
<signal name="Lock" /> \
|
||||
<signal name="Unlock" /> \
|
||||
<property name="Active" type="b" access="read" /> \
|
||||
<property name="Class" type="s" access="read" /> \
|
||||
<property name="Id" type="s" access="read" /> \
|
||||
<method name="SetLockedHint"> \
|
||||
<arg type="b" direction="in"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SystemdLoginSessionIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.login1.Session">
|
||||
<signal name="Lock" />
|
||||
<signal name="Unlock" />
|
||||
<property name="Active" type="b" access="read" />
|
||||
<property name="Class" type="s" access="read" />
|
||||
<property name="Id" type="s" access="read" />
|
||||
<method name="SetLockedHint">
|
||||
<arg type="b" direction="in"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const SystemdLoginUserIface = '<node> \
|
||||
<interface name="org.freedesktop.login1.User"> \
|
||||
<property name="Display" type="(so)" access="read" /> \
|
||||
<property name="Sessions" type="a(so)" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SystemdLoginUserIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.login1.User">
|
||||
<property name="Display" type="(so)" access="read" />
|
||||
<property name="Sessions" type="a(so)" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
|
||||
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
|
||||
|
@ -92,41 +92,43 @@ function _findProviderForSid(sid) {
|
||||
// The following are not the complete interfaces, just the methods we need
|
||||
// (or may need in the future)
|
||||
|
||||
const ModemGsmNetworkInterface = '<node> \
|
||||
<interface name="org.freedesktop.ModemManager.Modem.Gsm.Network"> \
|
||||
<method name="GetRegistrationInfo"> \
|
||||
<arg type="(uss)" direction="out" /> \
|
||||
</method> \
|
||||
<method name="GetSignalQuality"> \
|
||||
<arg type="u" direction="out" /> \
|
||||
</method> \
|
||||
<property name="AccessTechnology" type="u" access="read" /> \
|
||||
<signal name="SignalQuality"> \
|
||||
<arg type="u" direction="out" /> \
|
||||
</signal> \
|
||||
<signal name="RegistrationInfo"> \
|
||||
<arg type="u" direction="out" /> \
|
||||
<arg type="s" direction="out" /> \
|
||||
<arg type="s" direction="out" /> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ModemGsmNetworkInterface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
|
||||
<method name="GetRegistrationInfo">
|
||||
<arg type="(uss)" direction="out" />
|
||||
</method>
|
||||
<method name="GetSignalQuality">
|
||||
<arg type="u" direction="out" />
|
||||
</method>
|
||||
<property name="AccessTechnology" type="u" access="read" />
|
||||
<signal name="SignalQuality">
|
||||
<arg type="u" direction="out" />
|
||||
</signal>
|
||||
<signal name="RegistrationInfo">
|
||||
<arg type="u" direction="out" />
|
||||
<arg type="s" direction="out" />
|
||||
<arg type="s" direction="out" />
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface);
|
||||
|
||||
const ModemCdmaInterface = '<node> \
|
||||
<interface name="org.freedesktop.ModemManager.Modem.Cdma"> \
|
||||
<method name="GetSignalQuality"> \
|
||||
<arg type="u" direction="out" /> \
|
||||
</method> \
|
||||
<method name="GetServingSystem"> \
|
||||
<arg type="(usu)" direction="out" /> \
|
||||
</method> \
|
||||
<signal name="SignalQuality"> \
|
||||
<arg type="u" direction="out" /> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ModemCdmaInterface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.ModemManager.Modem.Cdma">
|
||||
<method name="GetSignalQuality">
|
||||
<arg type="u" direction="out" />
|
||||
</method>
|
||||
<method name="GetServingSystem">
|
||||
<arg type="(usu)" direction="out" />
|
||||
</method>
|
||||
<signal name="SignalQuality">
|
||||
<arg type="u" direction="out" />
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface);
|
||||
|
||||
@ -222,26 +224,29 @@ Signals.addSignalMethods(ModemCdma.prototype);
|
||||
// Support for the new ModemManager1 interface (MM >= 0.7)
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const BroadbandModemInterface = '<node> \
|
||||
<interface name="org.freedesktop.ModemManager1.Modem"> \
|
||||
<property name="SignalQuality" type="(ub)" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const BroadbandModemInterface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.ModemManager1.Modem">
|
||||
<property name="SignalQuality" type="(ub)" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
const BroadbandModemProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemInterface);
|
||||
|
||||
const BroadbandModem3gppInterface = '<node> \
|
||||
<interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp"> \
|
||||
<property name="OperatorCode" type="s" access="read" /> \
|
||||
<property name="OperatorName" type="s" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const BroadbandModem3gppInterface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp">
|
||||
<property name="OperatorCode" type="s" access="read" />
|
||||
<property name="OperatorName" type="s" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gppInterface);
|
||||
|
||||
const BroadbandModemCdmaInterface = '<node> \
|
||||
<interface name="org.freedesktop.ModemManager1.Modem.ModemCdma"> \
|
||||
<property name="Sid" type="u" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const BroadbandModemCdmaInterface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.ModemManager1.Modem.ModemCdma">
|
||||
<property name="Sid" type="u" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface);
|
||||
|
||||
var BroadbandModem = new Lang.Class({
|
||||
|
@ -8,21 +8,22 @@ const Signals = imports.signals;
|
||||
|
||||
// Specified in the D-Bus specification here:
|
||||
// http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager
|
||||
const ObjectManagerIface = '<node> \
|
||||
<interface name="org.freedesktop.DBus.ObjectManager"> \
|
||||
<method name="GetManagedObjects"> \
|
||||
<arg name="objects" type="a{oa{sa{sv}}}" direction="out"/> \
|
||||
</method> \
|
||||
<signal name="InterfacesAdded"> \
|
||||
<arg name="objectPath" type="o"/> \
|
||||
<arg name="interfaces" type="a{sa{sv}}" /> \
|
||||
</signal> \
|
||||
<signal name="InterfacesRemoved"> \
|
||||
<arg name="objectPath" type="o"/> \
|
||||
<arg name="interfaces" type="as" /> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ObjectManagerIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.DBus.ObjectManager">
|
||||
<method name="GetManagedObjects">
|
||||
<arg name="objects" type="a{oa{sa{sv}}}" direction="out"/>
|
||||
</method>
|
||||
<signal name="InterfacesAdded">
|
||||
<arg name="objectPath" type="o"/>
|
||||
<arg name="interfaces" type="a{sa{sv}}" />
|
||||
</signal>
|
||||
<signal name="InterfacesRemoved">
|
||||
<arg name="objectPath" type="o"/>
|
||||
<arg name="interfaces" type="as" />
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface);
|
||||
|
||||
|
@ -2,30 +2,31 @@
|
||||
|
||||
const Gio = imports.gi.Gio;
|
||||
|
||||
const PermissionStoreIface = '<node> \
|
||||
<interface name="org.freedesktop.impl.portal.PermissionStore"> \
|
||||
<method name="Lookup"> \
|
||||
<arg name="table" type="s" direction="in"/> \
|
||||
<arg name="id" type="s" direction="in"/> \
|
||||
<arg name="permissions" type="a{sas}" direction="out"/> \
|
||||
<arg name="data" type="v" direction="out"/> \
|
||||
</method> \
|
||||
<method name="Set"> \
|
||||
<arg name="table" type="s" direction="in"/> \
|
||||
<arg name="create" type="b" direction="in"/> \
|
||||
<arg name="id" type="s" direction="in"/> \
|
||||
<arg name="app_permissions" type="a{sas}" direction="in"/> \
|
||||
<arg name="data" type="v" direction="in"/> \
|
||||
</method> \
|
||||
<signal name="Changed"> \
|
||||
<arg name="table" type="s" direction="out"/> \
|
||||
<arg name="id" type="s" direction="out"/> \
|
||||
<arg name="deleted" type="b" direction="out"/> \
|
||||
<arg name="data" type="v" direction="out"/> \
|
||||
<arg name="permissions" type="a{sas}" direction="out"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const PermissionStoreIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.impl.portal.PermissionStore">
|
||||
<method name="Lookup">
|
||||
<arg name="table" type="s" direction="in"/>
|
||||
<arg name="id" type="s" direction="in"/>
|
||||
<arg name="permissions" type="a{sas}" direction="out"/>
|
||||
<arg name="data" type="v" direction="out"/>
|
||||
</method>
|
||||
<method name="Set">
|
||||
<arg name="table" type="s" direction="in"/>
|
||||
<arg name="create" type="b" direction="in"/>
|
||||
<arg name="id" type="s" direction="in"/>
|
||||
<arg name="app_permissions" type="a{sas}" direction="in"/>
|
||||
<arg name="data" type="v" direction="in"/>
|
||||
</method>
|
||||
<signal name="Changed">
|
||||
<arg name="table" type="s" direction="out"/>
|
||||
<arg name="id" type="s" direction="out"/>
|
||||
<arg name="deleted" type="b" direction="out"/>
|
||||
<arg name="data" type="v" direction="out"/>
|
||||
<arg name="permissions" type="a{sas}" direction="out"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface);
|
||||
|
||||
|
@ -7,14 +7,15 @@ const Signals = imports.signals;
|
||||
|
||||
const ObjectManager = imports.misc.objectManager;
|
||||
|
||||
const SmartcardTokenIface = '<node> \
|
||||
<interface name="org.gnome.SettingsDaemon.Smartcard.Token"> \
|
||||
<property name="Name" type="s" access="read"/> \
|
||||
<property name="Driver" type="o" access="read"/> \
|
||||
<property name="IsInserted" type="b" access="read"/> \
|
||||
<property name="UsedToLogin" type="b" access="read"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SmartcardTokenIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SettingsDaemon.Smartcard.Token">
|
||||
<property name="Name" type="s" access="read"/>
|
||||
<property name="Driver" type="o" access="read"/>
|
||||
<property name="IsInserted" type="b" access="read"/>
|
||||
<property name="UsedToLogin" type="b" access="read"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
let _smartcardManager = null;
|
||||
|
||||
|
@ -22,11 +22,12 @@ const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
|
||||
const SENSOR_BUS_NAME = 'net.hadess.SensorProxy';
|
||||
const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy';
|
||||
|
||||
const SensorProxyInterface = '<node> \
|
||||
<interface name="net.hadess.SensorProxy"> \
|
||||
<property name="HasAccelerometer" type="b" access="read"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SensorProxyInterface = `
|
||||
<node>
|
||||
<interface name="net.hadess.SensorProxy">
|
||||
<property name="HasAccelerometer" type="b" access="read"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const POWER_OFF_ACTION_ID = 'power-off';
|
||||
const LOCK_SCREEN_ACTION_ID = 'lock-screen';
|
||||
|
7
js/portal-resources.gresource.xml
Normal file
7
js/portal-resources.gresource.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/org/gnome/shell">
|
||||
<file>misc/config.js</file>
|
||||
<file>portalHelper/main.js</file>
|
||||
</gresource>
|
||||
</gresources>
|
@ -30,25 +30,26 @@ const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org';
|
||||
const CONNECTIVITY_CHECK_URI = 'http://' + CONNECTIVITY_CHECK_HOST;
|
||||
const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC;
|
||||
|
||||
const HelperDBusInterface = '<node> \
|
||||
<interface name="org.gnome.Shell.PortalHelper"> \
|
||||
<method name="Authenticate"> \
|
||||
<arg type="o" direction="in" name="connection" /> \
|
||||
<arg type="s" direction="in" name="url" /> \
|
||||
<arg type="u" direction="in" name="timestamp" /> \
|
||||
</method> \
|
||||
<method name="Close"> \
|
||||
<arg type="o" direction="in" name="connection" /> \
|
||||
</method> \
|
||||
<method name="Refresh"> \
|
||||
<arg type="o" direction="in" name="connection" /> \
|
||||
</method> \
|
||||
<signal name="Done"> \
|
||||
<arg type="o" name="connection" /> \
|
||||
<arg type="u" name="result" /> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const HelperDBusInterface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.PortalHelper">
|
||||
<method name="Authenticate">
|
||||
<arg type="o" direction="in" name="connection" />
|
||||
<arg type="s" direction="in" name="url" />
|
||||
<arg type="u" direction="in" name="timestamp" />
|
||||
</method>
|
||||
<method name="Close">
|
||||
<arg type="o" direction="in" name="connection" />
|
||||
</method>
|
||||
<method name="Refresh">
|
||||
<arg type="o" direction="in" name="connection" />
|
||||
</method>
|
||||
<signal name="Done">
|
||||
<arg type="o" name="connection" />
|
||||
<arg type="u" name="result" />
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var PortalHeaderBar = new Lang.Class({
|
||||
Name: 'PortalHeaderBar',
|
||||
|
11
js/prefs-resources.gresource.xml
Normal file
11
js/prefs-resources.gresource.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/org/gnome/shell">
|
||||
<file>extensionPrefs/main.js</file>
|
||||
|
||||
<file>misc/config.js</file>
|
||||
<file>misc/extensionUtils.js</file>
|
||||
<file>misc/fileUtils.js</file>
|
||||
<file>misc/params.js</file>
|
||||
</gresource>
|
||||
</gresources>
|
@ -10,27 +10,29 @@ const CheckBox = imports.ui.checkBox;
|
||||
const Dialog = imports.ui.dialog;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
|
||||
const RequestIface = '<node> \
|
||||
<interface name="org.freedesktop.impl.portal.Request"> \
|
||||
<method name="Close"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const RequestIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.impl.portal.Request">
|
||||
<method name="Close"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const AccessIface = '<node> \
|
||||
<interface name="org.freedesktop.impl.portal.Access"> \
|
||||
<method name="AccessDialog"> \
|
||||
<arg type="o" name="handle" direction="in"/> \
|
||||
<arg type="s" name="app_id" direction="in"/> \
|
||||
<arg type="s" name="parent_window" direction="in"/> \
|
||||
<arg type="s" name="title" direction="in"/> \
|
||||
<arg type="s" name="subtitle" direction="in"/> \
|
||||
<arg type="s" name="body" direction="in"/> \
|
||||
<arg type="a{sv}" name="options" direction="in"/> \
|
||||
<arg type="u" name="response" direction="out"/> \
|
||||
<arg type="a{sv}" name="results" direction="out"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const AccessIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.impl.portal.Access">
|
||||
<method name="AccessDialog">
|
||||
<arg type="o" name="handle" direction="in"/>
|
||||
<arg type="s" name="app_id" direction="in"/>
|
||||
<arg type="s" name="parent_window" direction="in"/>
|
||||
<arg type="s" name="title" direction="in"/>
|
||||
<arg type="s" name="subtitle" direction="in"/>
|
||||
<arg type="s" name="body" direction="in"/>
|
||||
<arg type="a{sv}" name="options" direction="in"/>
|
||||
<arg type="u" name="response" direction="out"/>
|
||||
<arg type="a{sv}" name="results" direction="out"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var DialogResponse = {
|
||||
OK: 0,
|
||||
|
@ -66,11 +66,12 @@ var PAGE_SWITCH_TIME = 0.3;
|
||||
const SWITCHEROO_BUS_NAME = 'net.hadess.SwitcherooControl';
|
||||
const SWITCHEROO_OBJECT_PATH = '/net/hadess/SwitcherooControl';
|
||||
|
||||
const SwitcherooProxyInterface = '<node> \
|
||||
<interface name="net.hadess.SwitcherooControl"> \
|
||||
<property name="HasDualGpu" type="b" access="read"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SwitcherooProxyInterface = `
|
||||
<node>
|
||||
<interface name="net.hadess.SwitcherooControl">
|
||||
<property name="HasDualGpu" type="b" access="read"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const SwitcherooProxy = Gio.DBusProxy.makeProxyWrapper(SwitcherooProxyInterface);
|
||||
let discreteGpuAvailable = false;
|
||||
|
@ -15,18 +15,19 @@ var AudioDevice = {
|
||||
MICROPHONE: 1 << 2
|
||||
};
|
||||
|
||||
const AudioDeviceSelectionIface = '<node> \
|
||||
<interface name="org.gnome.Shell.AudioDeviceSelection"> \
|
||||
<method name="Open"> \
|
||||
<arg name="devices" direction="in" type="as" /> \
|
||||
</method> \
|
||||
<method name="Close"> \
|
||||
</method> \
|
||||
<signal name="DeviceSelected"> \
|
||||
<arg name="device" type="s" /> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const AudioDeviceSelectionIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.AudioDeviceSelection">
|
||||
<method name="Open">
|
||||
<arg name="devices" direction="in" type="as" />
|
||||
</method>
|
||||
<method name="Close">
|
||||
</method>
|
||||
<signal name="DeviceSelected">
|
||||
<arg name="device" type="s" />
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var AudioDeviceSelectionDialog = new Lang.Class({
|
||||
Name: 'AudioDeviceSelectionDialog',
|
||||
|
210
js/ui/barLevel.js
Normal file
210
js/ui/barLevel.js
Normal file
@ -0,0 +1,210 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const Atk = imports.gi.Atk;
|
||||
const Cairo = imports.cairo;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
|
||||
var BarLevel = new Lang.Class({
|
||||
Name: "BarLevel",
|
||||
|
||||
_init(value, params) {
|
||||
if (isNaN(value))
|
||||
// Avoid spreading NaNs around
|
||||
throw TypeError('The bar level value must be a number');
|
||||
this._maxValue = 1;
|
||||
this._value = Math.max(Math.min(value, this._maxValue), 0);
|
||||
this._overdriveStart = 1;
|
||||
this._barLevelWidth = 0;
|
||||
|
||||
if (params == undefined)
|
||||
params = {}
|
||||
|
||||
this.actor = new St.DrawingArea({ styleClass: params['styleClass'] || 'barlevel',
|
||||
can_focus: params['canFocus'] || false,
|
||||
reactive: params['reactive'] || false,
|
||||
accessible_role: params['accessibleRole'] || Atk.Role.LEVEL_BAR });
|
||||
this.actor.connect('repaint', this._barLevelRepaint.bind(this));
|
||||
this.actor.connect('allocation-changed', (actor, box) => {
|
||||
this._barLevelWidth = box.get_width();
|
||||
});
|
||||
|
||||
this._customAccessible = St.GenericAccessible.new_for_actor(this.actor);
|
||||
this.actor.set_accessible(this._customAccessible);
|
||||
|
||||
this._customAccessible.connect('get-current-value', this._getCurrentValue.bind(this));
|
||||
this._customAccessible.connect('get-minimum-value', this._getMinimumValue.bind(this));
|
||||
this._customAccessible.connect('get-maximum-value', this._getMaximumValue.bind(this));
|
||||
this._customAccessible.connect('set-current-value', this._setCurrentValue.bind(this));
|
||||
|
||||
this.connect('value-changed', this._valueChanged.bind(this));
|
||||
},
|
||||
|
||||
setValue(value) {
|
||||
if (isNaN(value))
|
||||
throw TypeError('The bar level value must be a number');
|
||||
|
||||
this._value = Math.max(Math.min(value, this._maxValue), 0);
|
||||
this.actor.queue_repaint();
|
||||
},
|
||||
|
||||
setMaximumValue(value) {
|
||||
if (isNaN(value))
|
||||
throw TypeError('The bar level max value must be a number');
|
||||
|
||||
this._maxValue = Math.max(value, 1);
|
||||
this._overdriveStart = Math.min(this._overdriveStart, this._maxValue);
|
||||
this.actor.queue_repaint();
|
||||
},
|
||||
|
||||
setOverdriveStart(value) {
|
||||
if (isNaN(value))
|
||||
throw TypeError('The overdrive limit value must be a number');
|
||||
if (value > this._maxValue)
|
||||
throw new Error(`Tried to set overdrive value to ${value}, ` +
|
||||
`which is a number greater than the maximum allowed value ${this._maxValue}`);
|
||||
|
||||
this._overdriveStart = value;
|
||||
this._value = Math.max(Math.min(value, this._maxValue), 0);
|
||||
this.actor.queue_repaint();
|
||||
},
|
||||
|
||||
_barLevelRepaint(area) {
|
||||
let cr = area.get_context();
|
||||
let themeNode = area.get_theme_node();
|
||||
let [width, height] = area.get_surface_size();
|
||||
|
||||
let barLevelHeight = themeNode.get_length('-barlevel-height');
|
||||
let barLevelBorderRadius = Math.min(width, barLevelHeight) / 2;
|
||||
let fgColor = themeNode.get_foreground_color();
|
||||
|
||||
let barLevelColor = themeNode.get_color('-barlevel-background-color');
|
||||
let barLevelActiveColor = themeNode.get_color('-barlevel-active-background-color');
|
||||
let barLevelOverdriveColor = themeNode.get_color('-barlevel-overdrive-color');
|
||||
|
||||
let barLevelBorderWidth = Math.min(themeNode.get_length('-barlevel-border-width'), 1);
|
||||
let [hasBorderColor, barLevelBorderColor] =
|
||||
themeNode.lookup_color('-barlevel-border-color', false);
|
||||
if (!hasBorderColor)
|
||||
barLevelBorderColor = barLevelColor;
|
||||
let [hasActiveBorderColor, barLevelActiveBorderColor] =
|
||||
themeNode.lookup_color('-barlevel-active-border-color', false);
|
||||
if (!hasActiveBorderColor)
|
||||
barLevelActiveBorderColor = barLevelActiveColor;
|
||||
let [hasOverdriveBorderColor, barLevelOverdriveBorderColor] =
|
||||
themeNode.lookup_color('-barlevel-overdrive-border-color', false);
|
||||
if (!hasOverdriveBorderColor)
|
||||
barLevelOverdriveBorderColor = barLevelOverdriveColor;
|
||||
|
||||
const TAU = Math.PI * 2;
|
||||
|
||||
let endX = 0;
|
||||
if (this._maxValue > 0)
|
||||
endX = barLevelBorderRadius + (width - 2 * barLevelBorderRadius) * this._value / this._maxValue;
|
||||
|
||||
let overdriveSeparatorX = barLevelBorderRadius + (width - 2 * barLevelBorderRadius) * this._overdriveStart / this._maxValue;
|
||||
let overdriveActive = this._overdriveStart !== this._maxValue;
|
||||
let overdriveSeparatorWidth = 0;
|
||||
if (overdriveActive)
|
||||
overdriveSeparatorWidth = themeNode.get_length('-barlevel-overdrive-separator-width');
|
||||
|
||||
/* background bar */
|
||||
cr.arc(width - barLevelBorderRadius - barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4);
|
||||
cr.lineTo(endX, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(width - barLevelBorderRadius - barLevelBorderWidth, (height - barLevelHeight) / 2);
|
||||
Clutter.cairo_set_source_color(cr, barLevelColor);
|
||||
cr.fillPreserve();
|
||||
Clutter.cairo_set_source_color(cr, barLevelBorderColor);
|
||||
cr.setLineWidth(barLevelBorderWidth);
|
||||
cr.stroke();
|
||||
|
||||
/* normal progress bar */
|
||||
let x = Math.min(endX, overdriveSeparatorX - overdriveSeparatorWidth / 2);
|
||||
cr.arc(barLevelBorderRadius + barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * 1 / 4, TAU * 3 / 4);
|
||||
cr.lineTo(x, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(x, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(barLevelBorderRadius + barLevelBorderWidth, (height + barLevelHeight) / 2);
|
||||
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
||||
cr.fillPreserve();
|
||||
Clutter.cairo_set_source_color(cr, barLevelActiveBorderColor);
|
||||
cr.setLineWidth(barLevelBorderWidth);
|
||||
cr.stroke();
|
||||
|
||||
/* overdrive progress barLevel */
|
||||
x = Math.min(endX, overdriveSeparatorX) + overdriveSeparatorWidth / 2;
|
||||
if (this._value > this._overdriveStart) {
|
||||
cr.moveTo(x, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(endX, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(x, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(x, (height - barLevelHeight) / 2);
|
||||
Clutter.cairo_set_source_color(cr, barLevelOverdriveColor);
|
||||
cr.fillPreserve();
|
||||
Clutter.cairo_set_source_color(cr, barLevelOverdriveBorderColor);
|
||||
cr.setLineWidth(barLevelBorderWidth);
|
||||
cr.stroke();
|
||||
}
|
||||
|
||||
/* end progress bar arc */
|
||||
if (this._value <= this._overdriveStart)
|
||||
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
||||
else
|
||||
Clutter.cairo_set_source_color(cr, barLevelOverdriveColor);
|
||||
cr.arc(endX, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4);
|
||||
cr.lineTo(Math.floor(endX), (height + barLevelHeight) / 2);
|
||||
cr.lineTo(Math.floor(endX), (height - barLevelHeight) / 2);
|
||||
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
||||
cr.fillPreserve();
|
||||
cr.setLineWidth(barLevelBorderWidth);
|
||||
cr.stroke();
|
||||
|
||||
/* draw overdrive separator */
|
||||
if (overdriveActive) {
|
||||
cr.moveTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(overdriveSeparatorX + overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(overdriveSeparatorX + overdriveSeparatorWidth / 2, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2);
|
||||
if (this._value <= this._overdriveStart)
|
||||
Clutter.cairo_set_source_color(cr, fgColor);
|
||||
else
|
||||
Clutter.cairo_set_source_color(cr, barLevelColor);
|
||||
cr.fill();
|
||||
}
|
||||
|
||||
cr.$dispose();
|
||||
},
|
||||
|
||||
_getCurrentValue(actor) {
|
||||
return this._value;
|
||||
},
|
||||
|
||||
_getOverdriveStart(actor) {
|
||||
return this._overdriveStart;
|
||||
},
|
||||
|
||||
_getMinimumValue(actor) {
|
||||
return 0;
|
||||
},
|
||||
|
||||
_getMaximumValue(actor) {
|
||||
return this._maxValue;
|
||||
},
|
||||
|
||||
_setCurrentValue(actor, value) {
|
||||
this._value = value;
|
||||
},
|
||||
|
||||
_valueChanged(barLevel, value, property) {
|
||||
this._customAccessible.notify("accessible-value");
|
||||
},
|
||||
|
||||
get value() {
|
||||
return this._value;
|
||||
}
|
||||
});
|
||||
|
||||
Signals.addSignalMethods(BarLevel.prototype);
|
@ -44,6 +44,7 @@ var BoxPointer = new Lang.Class({
|
||||
y_fill: true });
|
||||
this._container = new Shell.GenericContainer();
|
||||
this.actor.set_child(this._container);
|
||||
this.actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||
this._container.connect('get-preferred-width', this._getPreferredWidth.bind(this));
|
||||
this._container.connect('get-preferred-height', this._getPreferredHeight.bind(this));
|
||||
this._container.connect('allocate', this._allocate.bind(this));
|
||||
|
@ -134,18 +134,19 @@ var EmptyEventSource = new Lang.Class({
|
||||
});
|
||||
Signals.addSignalMethods(EmptyEventSource.prototype);
|
||||
|
||||
const CalendarServerIface = '<node> \
|
||||
<interface name="org.gnome.Shell.CalendarServer"> \
|
||||
<method name="GetEvents"> \
|
||||
<arg type="x" direction="in" /> \
|
||||
<arg type="x" direction="in" /> \
|
||||
<arg type="b" direction="in" /> \
|
||||
<arg type="a(sssbxxa{sv})" direction="out" /> \
|
||||
</method> \
|
||||
<property name="HasCalendars" type="b" access="read" /> \
|
||||
<signal name="Changed" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const CalendarServerIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.CalendarServer">
|
||||
<method name="GetEvents">
|
||||
<arg type="x" direction="in" />
|
||||
<arg type="x" direction="in" />
|
||||
<arg type="b" direction="in" />
|
||||
<arg type="a(sssbxxa{sv})" direction="out" />
|
||||
</method>
|
||||
<property name="HasCalendars" type="b" access="read" />
|
||||
<signal name="Changed" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const CalendarServerInfo = Gio.DBusInterfaceInfo.new_for_xml(CalendarServerIface);
|
||||
|
||||
|
@ -74,14 +74,15 @@ function startAppForMount(app, mount) {
|
||||
|
||||
/******************************************/
|
||||
|
||||
const HotplugSnifferIface = '<node> \
|
||||
<interface name="org.gnome.Shell.HotplugSniffer"> \
|
||||
<method name="SniffURI"> \
|
||||
<arg type="s" direction="in" /> \
|
||||
<arg type="as" direction="out" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const HotplugSnifferIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.HotplugSniffer">
|
||||
<method name="SniffURI">
|
||||
<arg type="s" direction="in" />
|
||||
<arg type="as" direction="out" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface);
|
||||
function HotplugSniffer() {
|
||||
|
@ -506,8 +506,12 @@ var VPNRequestHandler = new Lang.Class({
|
||||
try {
|
||||
data = this._dataStdout.peek_buffer();
|
||||
|
||||
keyfile.load_from_data(data.toString(), data.length,
|
||||
GLib.KeyFileFlags.NONE);
|
||||
if (data instanceof Uint8Array)
|
||||
data = imports.byteArray.toGBytes(data);
|
||||
else
|
||||
data = data.toGBytes();
|
||||
|
||||
keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE);
|
||||
|
||||
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)
|
||||
throw new Error('Invalid plugin keyfile version, is %d');
|
||||
|
@ -402,6 +402,7 @@ var Dash = new Lang.Class({
|
||||
clip_to_allocation: true });
|
||||
this._box._delegate = this;
|
||||
this._container.add_actor(this._box);
|
||||
this._container.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||
|
||||
this._showAppsIcon = new ShowAppsIcon();
|
||||
this._showAppsIcon.childScale = 1;
|
||||
|
@ -40,6 +40,7 @@ var Dialog = new Lang.Class({
|
||||
// mode accordingly so wrapped labels are handled correctly during
|
||||
// size requests.
|
||||
this._dialog.request_mode = Clutter.RequestMode.HEIGHT_FOR_WIDTH;
|
||||
this._dialog.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||
|
||||
this.contentLayout = new St.BoxLayout({ vertical: true,
|
||||
style_class: "modal-dialog-content-box" });
|
||||
|
@ -43,22 +43,23 @@ const _DIALOG_ICON_SIZE = 48;
|
||||
|
||||
var GSM_SESSION_MANAGER_LOGOUT_FORCE = 2;
|
||||
|
||||
const EndSessionDialogIface = '<node> \
|
||||
<interface name="org.gnome.SessionManager.EndSessionDialog"> \
|
||||
<method name="Open"> \
|
||||
<arg type="u" direction="in" /> \
|
||||
<arg type="u" direction="in" /> \
|
||||
<arg type="u" direction="in" /> \
|
||||
<arg type="ao" direction="in" /> \
|
||||
</method> \
|
||||
<method name="Close" /> \
|
||||
<signal name="ConfirmedLogout" /> \
|
||||
<signal name="ConfirmedReboot" /> \
|
||||
<signal name="ConfirmedShutdown" /> \
|
||||
<signal name="Canceled" /> \
|
||||
<signal name="Closed" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const EndSessionDialogIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SessionManager.EndSessionDialog">
|
||||
<method name="Open">
|
||||
<arg type="u" direction="in" />
|
||||
<arg type="u" direction="in" />
|
||||
<arg type="u" direction="in" />
|
||||
<arg type="ao" direction="in" />
|
||||
</method>
|
||||
<method name="Close" />
|
||||
<signal name="ConfirmedLogout" />
|
||||
<signal name="ConfirmedReboot" />
|
||||
<signal name="ConfirmedShutdown" />
|
||||
<signal name="Canceled" />
|
||||
<signal name="Closed" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const logoutDialogContent = {
|
||||
subjectWithUser: C_("title", "Log Out %s"),
|
||||
@ -168,39 +169,42 @@ const DialogContent = {
|
||||
|
||||
var MAX_USERS_IN_SESSION_DIALOG = 5;
|
||||
|
||||
const LogindSessionIface = '<node> \
|
||||
<interface name="org.freedesktop.login1.Session"> \
|
||||
<property name="Id" type="s" access="read"/> \
|
||||
<property name="Remote" type="b" access="read"/> \
|
||||
<property name="Class" type="s" access="read"/> \
|
||||
<property name="Type" type="s" access="read"/> \
|
||||
<property name="State" type="s" access="read"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const LogindSessionIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.login1.Session">
|
||||
<property name="Id" type="s" access="read"/>
|
||||
<property name="Remote" type="b" access="read"/>
|
||||
<property name="Class" type="s" access="read"/>
|
||||
<property name="Type" type="s" access="read"/>
|
||||
<property name="State" type="s" access="read"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface);
|
||||
|
||||
const PkOfflineIface = '<node> \
|
||||
<interface name="org.freedesktop.PackageKit.Offline"> \
|
||||
<property name="UpdatePrepared" type="b" access="read"/> \
|
||||
<property name="UpdateTriggered" type="b" access="read"/> \
|
||||
<property name="UpgradePrepared" type="b" access="read"/> \
|
||||
<property name="UpgradeTriggered" type="b" access="read"/> \
|
||||
<property name="PreparedUpgrade" type="a{sv}" access="read"/> \
|
||||
<method name="Trigger"> \
|
||||
<arg type="s" name="action" direction="in"/> \
|
||||
</method> \
|
||||
<method name="Cancel"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const PkOfflineIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.PackageKit.Offline">
|
||||
<property name="UpdatePrepared" type="b" access="read"/>
|
||||
<property name="UpdateTriggered" type="b" access="read"/>
|
||||
<property name="UpgradePrepared" type="b" access="read"/>
|
||||
<property name="UpgradeTriggered" type="b" access="read"/>
|
||||
<property name="PreparedUpgrade" type="a{sv}" access="read"/>
|
||||
<method name="Trigger">
|
||||
<arg type="s" name="action" direction="in"/>
|
||||
</method>
|
||||
<method name="Cancel"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const PkOfflineProxy = Gio.DBusProxy.makeProxyWrapper(PkOfflineIface);
|
||||
|
||||
const UPowerIface = '<node> \
|
||||
<interface name="org.freedesktop.UPower"> \
|
||||
<property name="OnBattery" type="b" access="read"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const UPowerIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.UPower">
|
||||
<property name="OnBattery" type="b" access="read"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const UPowerProxy = Gio.DBusProxy.makeProxyWrapper(UPowerIface);
|
||||
|
||||
|
@ -472,6 +472,8 @@ var KeyboardModel = new Lang.Class({
|
||||
_loadModel(groupName) {
|
||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName));
|
||||
let [success, contents] = file.load_contents(null);
|
||||
if (contents instanceof Uint8Array)
|
||||
contents = imports.byteArray.toString(contents);
|
||||
|
||||
return JSON.parse(contents);
|
||||
},
|
||||
@ -490,13 +492,18 @@ var FocusTracker = new Lang.Class({
|
||||
|
||||
_init() {
|
||||
this._currentWindow = null;
|
||||
this._currentWindowPositionId = 0;
|
||||
|
||||
global.display.connect('notify::focus-window', () => {
|
||||
this._setCurrentWindow(global.display.focus_window);
|
||||
this.emit('window-changed', this._currentWindow);
|
||||
});
|
||||
|
||||
global.display.connect('grab-op-begin', (display, window, op) => {
|
||||
if (window == this._currentWindow &&
|
||||
(op == Meta.GrabOp.MOVING || op == Meta.GrabOp.KEYBOARD_MOVING))
|
||||
this.emit('reset');
|
||||
});
|
||||
|
||||
/* Valid for wayland clients */
|
||||
Main.inputMethod.connect('cursor-location-changed', (o, rect) => {
|
||||
let newRect = { x: rect.get_x(), y: rect.get_y(), width: rect.get_width(), height: rect.get_height() };
|
||||
@ -518,18 +525,7 @@ var FocusTracker = new Lang.Class({
|
||||
},
|
||||
|
||||
_setCurrentWindow(window) {
|
||||
if (this._currentWindow)
|
||||
this._currentWindow.disconnect(this._currentWindowPositionId);
|
||||
|
||||
this._currentWindow = window;
|
||||
if (window) {
|
||||
this._currentWindowPositionId = this._currentWindow.connect('position-changed', () => {
|
||||
if (global.display.get_grab_op() == Meta.GrabOp.NONE)
|
||||
this.emit('position-changed');
|
||||
else
|
||||
this.emit('reset');
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
_setCurrentRect(rect) {
|
||||
|
@ -204,6 +204,7 @@ var LayoutManager = new Lang.Class({
|
||||
|
||||
// Set up stage hierarchy to group all UI actors under one container.
|
||||
this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' });
|
||||
this.uiGroup.set_flags(Clutter.ActorFlags.NO_LAYOUT);
|
||||
this.uiGroup.connect('allocate', (actor, box, flags) => {
|
||||
let children = actor.get_children();
|
||||
for (let i = 0; i < children.length; i++)
|
||||
|
@ -9,89 +9,91 @@ const ZOOM_SERVICE_PATH = '/org/gnome/Magnifier/ZoomRegion';
|
||||
|
||||
// Subset of gnome-mag's Magnifier dbus interface -- to be expanded. See:
|
||||
// http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml
|
||||
const MagnifierIface = '<node> \
|
||||
<interface name="org.gnome.Magnifier"> \
|
||||
<method name="setActive"> \
|
||||
<arg type="b" direction="in" /> \
|
||||
</method> \
|
||||
<method name="isActive"> \
|
||||
<arg type="b" direction="out" /> \
|
||||
</method> \
|
||||
<method name="showCursor" /> \
|
||||
<method name="hideCursor" /> \
|
||||
<method name="createZoomRegion"> \
|
||||
<arg type="d" direction="in" /> \
|
||||
<arg type="d" direction="in" /> \
|
||||
<arg type="ai" direction="in" /> \
|
||||
<arg type="ai" direction="in" /> \
|
||||
<arg type="o" direction="out" /> \
|
||||
</method> \
|
||||
<method name="addZoomRegion"> \
|
||||
<arg type="o" direction="in" /> \
|
||||
<arg type="b" direction="out" /> \
|
||||
</method> \
|
||||
<method name="getZoomRegions"> \
|
||||
<arg type="ao" direction="out" /> \
|
||||
</method> \
|
||||
<method name="clearAllZoomRegions" /> \
|
||||
<method name="fullScreenCapable"> \
|
||||
<arg type="b" direction="out" /> \
|
||||
</method> \
|
||||
<method name="setCrosswireSize"> \
|
||||
<arg type="i" direction="in" /> \
|
||||
</method> \
|
||||
<method name="getCrosswireSize"> \
|
||||
<arg type="i" direction="out" /> \
|
||||
</method> \
|
||||
<method name="setCrosswireLength"> \
|
||||
<arg type="i" direction="in" /> \
|
||||
</method> \
|
||||
<method name="getCrosswireLength"> \
|
||||
<arg type="i" direction="out" /> \
|
||||
</method> \
|
||||
<method name="setCrosswireClip"> \
|
||||
<arg type="b" direction="in" /> \
|
||||
</method> \
|
||||
<method name="getCrosswireClip"> \
|
||||
<arg type="b" direction="out" /> \
|
||||
</method> \
|
||||
<method name="setCrosswireColor"> \
|
||||
<arg type="u" direction="in" /> \
|
||||
</method> \
|
||||
<method name="getCrosswireColor"> \
|
||||
<arg type="u" direction="out" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const MagnifierIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Magnifier">
|
||||
<method name="setActive">
|
||||
<arg type="b" direction="in" />
|
||||
</method>
|
||||
<method name="isActive">
|
||||
<arg type="b" direction="out" />
|
||||
</method>
|
||||
<method name="showCursor" />
|
||||
<method name="hideCursor" />
|
||||
<method name="createZoomRegion">
|
||||
<arg type="d" direction="in" />
|
||||
<arg type="d" direction="in" />
|
||||
<arg type="ai" direction="in" />
|
||||
<arg type="ai" direction="in" />
|
||||
<arg type="o" direction="out" />
|
||||
</method>
|
||||
<method name="addZoomRegion">
|
||||
<arg type="o" direction="in" />
|
||||
<arg type="b" direction="out" />
|
||||
</method>
|
||||
<method name="getZoomRegions">
|
||||
<arg type="ao" direction="out" />
|
||||
</method>
|
||||
<method name="clearAllZoomRegions" />
|
||||
<method name="fullScreenCapable">
|
||||
<arg type="b" direction="out" />
|
||||
</method>
|
||||
<method name="setCrosswireSize">
|
||||
<arg type="i" direction="in" />
|
||||
</method>
|
||||
<method name="getCrosswireSize">
|
||||
<arg type="i" direction="out" />
|
||||
</method>
|
||||
<method name="setCrosswireLength">
|
||||
<arg type="i" direction="in" />
|
||||
</method>
|
||||
<method name="getCrosswireLength">
|
||||
<arg type="i" direction="out" />
|
||||
</method>
|
||||
<method name="setCrosswireClip">
|
||||
<arg type="b" direction="in" />
|
||||
</method>
|
||||
<method name="getCrosswireClip">
|
||||
<arg type="b" direction="out" />
|
||||
</method>
|
||||
<method name="setCrosswireColor">
|
||||
<arg type="u" direction="in" />
|
||||
</method>
|
||||
<method name="getCrosswireColor">
|
||||
<arg type="u" direction="out" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
// Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded. See:
|
||||
// http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml
|
||||
const ZoomRegionIface = '<node> \
|
||||
<interface name="org.gnome.Magnifier.ZoomRegion"> \
|
||||
<method name="setMagFactor"> \
|
||||
<arg type="d" direction="in" /> \
|
||||
<arg type="d" direction="in" /> \
|
||||
</method> \
|
||||
<method name="getMagFactor"> \
|
||||
<arg type="d" direction="out" /> \
|
||||
<arg type="d" direction="out" /> \
|
||||
</method> \
|
||||
<method name="setRoi"> \
|
||||
<arg type="ai" direction="in" /> \
|
||||
</method> \
|
||||
<method name="getRoi"> \
|
||||
<arg type="ai" direction="out" /> \
|
||||
</method> \
|
||||
<method name="shiftContentsTo"> \
|
||||
<arg type="i" direction="in" /> \
|
||||
<arg type="i" direction="in" /> \
|
||||
<arg type="b" direction="out" /> \
|
||||
</method> \
|
||||
<method name="moveResize"> \
|
||||
<arg type="ai" direction="in" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ZoomRegionIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Magnifier.ZoomRegion">
|
||||
<method name="setMagFactor">
|
||||
<arg type="d" direction="in" />
|
||||
<arg type="d" direction="in" />
|
||||
</method>
|
||||
<method name="getMagFactor">
|
||||
<arg type="d" direction="out" />
|
||||
<arg type="d" direction="out" />
|
||||
</method>
|
||||
<method name="setRoi">
|
||||
<arg type="ai" direction="in" />
|
||||
</method>
|
||||
<method name="getRoi">
|
||||
<arg type="ai" direction="out" />
|
||||
</method>
|
||||
<method name="shiftContentsTo">
|
||||
<arg type="i" direction="in" />
|
||||
<arg type="i" direction="in" />
|
||||
<arg type="b" direction="out" />
|
||||
</method>
|
||||
<method name="moveResize">
|
||||
<arg type="ai" direction="in" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
// For making unique ZoomRegion DBus proxy object paths of the form:
|
||||
// '/org/gnome/Magnifier/ZoomRegion/zoomer0',
|
||||
|
@ -8,41 +8,44 @@ const Calendar = imports.ui.calendar;
|
||||
const Main = imports.ui.main;
|
||||
const MessageList = imports.ui.messageList;
|
||||
|
||||
const DBusIface = '<node> \
|
||||
<interface name="org.freedesktop.DBus"> \
|
||||
<method name="ListNames"> \
|
||||
<arg type="as" direction="out" name="names" /> \
|
||||
</method> \
|
||||
<signal name="NameOwnerChanged"> \
|
||||
<arg type="s" direction="out" name="name" /> \
|
||||
<arg type="s" direction="out" name="oldOwner" /> \
|
||||
<arg type="s" direction="out" name="newOwner" /> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const DBusIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.DBus">
|
||||
<method name="ListNames">
|
||||
<arg type="as" direction="out" name="names" />
|
||||
</method>
|
||||
<signal name="NameOwnerChanged">
|
||||
<arg type="s" direction="out" name="name" />
|
||||
<arg type="s" direction="out" name="oldOwner" />
|
||||
<arg type="s" direction="out" name="newOwner" />
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
const DBusProxy = Gio.DBusProxy.makeProxyWrapper(DBusIface);
|
||||
|
||||
const MprisIface = '<node> \
|
||||
<interface name="org.mpris.MediaPlayer2"> \
|
||||
<method name="Raise" /> \
|
||||
<property name="CanRaise" type="b" access="read" /> \
|
||||
<property name="DesktopEntry" type="s" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const MprisIface = `
|
||||
<node>
|
||||
<interface name="org.mpris.MediaPlayer2">
|
||||
<method name="Raise" />
|
||||
<property name="CanRaise" type="b" access="read" />
|
||||
<property name="DesktopEntry" type="s" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
const MprisProxy = Gio.DBusProxy.makeProxyWrapper(MprisIface);
|
||||
|
||||
const MprisPlayerIface = '<node> \
|
||||
<interface name="org.mpris.MediaPlayer2.Player"> \
|
||||
<method name="PlayPause" /> \
|
||||
<method name="Next" /> \
|
||||
<method name="Previous" /> \
|
||||
<property name="CanGoNext" type="b" access="read" /> \
|
||||
<property name="CanGoPrevious" type="b" access="read" /> \
|
||||
<property name="CanPlay" type="b" access="read" /> \
|
||||
<property name="Metadata" type="a{sv}" access="read" /> \
|
||||
<property name="PlaybackStatus" type="s" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const MprisPlayerIface = `
|
||||
<node>
|
||||
<interface name="org.mpris.MediaPlayer2.Player">
|
||||
<method name="PlayPause" />
|
||||
<method name="Next" />
|
||||
<method name="Previous" />
|
||||
<property name="CanGoNext" type="b" access="read" />
|
||||
<property name="CanGoPrevious" type="b" access="read" />
|
||||
<property name="CanPlay" type="b" access="read" />
|
||||
<property name="Metadata" type="a{sv}" access="read" />
|
||||
<property name="PlaybackStatus" type="s" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
const MprisPlayerProxy = Gio.DBusProxy.makeProxyWrapper(MprisPlayerIface);
|
||||
|
||||
const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.';
|
||||
|
@ -17,55 +17,57 @@ const Params = imports.misc.params;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
// Should really be defined in Gio.js
|
||||
const BusIface = '<node> \
|
||||
<interface name="org.freedesktop.DBus"> \
|
||||
<method name="GetConnectionUnixProcessID"> \
|
||||
<arg type="s" direction="in" /> \
|
||||
<arg type="u" direction="out" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const BusIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.DBus">
|
||||
<method name="GetConnectionUnixProcessID">
|
||||
<arg type="s" direction="in" />
|
||||
<arg type="u" direction="out" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface);
|
||||
function Bus() {
|
||||
return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus');
|
||||
}
|
||||
|
||||
const FdoNotificationsIface = '<node> \
|
||||
<interface name="org.freedesktop.Notifications"> \
|
||||
<method name="Notify"> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="u" direction="in"/> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="s" direction="in"/> \
|
||||
<arg type="as" direction="in"/> \
|
||||
<arg type="a{sv}" direction="in"/> \
|
||||
<arg type="i" direction="in"/> \
|
||||
<arg type="u" direction="out"/> \
|
||||
</method> \
|
||||
<method name="CloseNotification"> \
|
||||
<arg type="u" direction="in"/> \
|
||||
</method> \
|
||||
<method name="GetCapabilities"> \
|
||||
<arg type="as" direction="out"/> \
|
||||
</method> \
|
||||
<method name="GetServerInformation"> \
|
||||
<arg type="s" direction="out"/> \
|
||||
<arg type="s" direction="out"/> \
|
||||
<arg type="s" direction="out"/> \
|
||||
<arg type="s" direction="out"/> \
|
||||
</method> \
|
||||
<signal name="NotificationClosed"> \
|
||||
<arg type="u"/> \
|
||||
<arg type="u"/> \
|
||||
</signal> \
|
||||
<signal name="ActionInvoked"> \
|
||||
<arg type="u"/> \
|
||||
<arg type="s"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const FdoNotificationsIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.Notifications">
|
||||
<method name="Notify">
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="u" direction="in"/>
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="s" direction="in"/>
|
||||
<arg type="as" direction="in"/>
|
||||
<arg type="a{sv}" direction="in"/>
|
||||
<arg type="i" direction="in"/>
|
||||
<arg type="u" direction="out"/>
|
||||
</method>
|
||||
<method name="CloseNotification">
|
||||
<arg type="u" direction="in"/>
|
||||
</method>
|
||||
<method name="GetCapabilities">
|
||||
<arg type="as" direction="out"/>
|
||||
</method>
|
||||
<method name="GetServerInformation">
|
||||
<arg type="s" direction="out"/>
|
||||
<arg type="s" direction="out"/>
|
||||
<arg type="s" direction="out"/>
|
||||
<arg type="s" direction="out"/>
|
||||
</method>
|
||||
<signal name="NotificationClosed">
|
||||
<arg type="u"/>
|
||||
<arg type="u"/>
|
||||
</signal>
|
||||
<signal name="ActionInvoked">
|
||||
<arg type="u"/>
|
||||
<arg type="s"/>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var NotificationClosedReason = {
|
||||
EXPIRED: 1,
|
||||
@ -654,18 +656,19 @@ var GtkNotificationDaemonNotification = new Lang.Class({
|
||||
},
|
||||
});
|
||||
|
||||
const FdoApplicationIface = '<node> \
|
||||
<interface name="org.freedesktop.Application"> \
|
||||
<method name="ActivateAction"> \
|
||||
<arg type="s" direction="in" /> \
|
||||
<arg type="av" direction="in" /> \
|
||||
<arg type="a{sv}" direction="in" /> \
|
||||
</method> \
|
||||
<method name="Activate"> \
|
||||
<arg type="a{sv}" direction="in" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const FdoApplicationIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.Application">
|
||||
<method name="ActivateAction">
|
||||
<arg type="s" direction="in" />
|
||||
<arg type="av" direction="in" />
|
||||
<arg type="a{sv}" direction="in" />
|
||||
</method>
|
||||
<method name="Activate">
|
||||
<arg type="a{sv}" direction="in" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface);
|
||||
|
||||
function objectPathFromAppId(appId) {
|
||||
@ -774,19 +777,20 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
},
|
||||
});
|
||||
|
||||
const GtkNotificationsIface = '<node> \
|
||||
<interface name="org.gtk.Notifications"> \
|
||||
<method name="AddNotification"> \
|
||||
<arg type="s" direction="in" /> \
|
||||
<arg type="s" direction="in" /> \
|
||||
<arg type="a{sv}" direction="in" /> \
|
||||
</method> \
|
||||
<method name="RemoveNotification"> \
|
||||
<arg type="s" direction="in" /> \
|
||||
<arg type="s" direction="in" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const GtkNotificationsIface = `
|
||||
<node>
|
||||
<interface name="org.gtk.Notifications">
|
||||
<method name="AddNotification">
|
||||
<arg type="s" direction="in" />
|
||||
<arg type="s" direction="in" />
|
||||
<arg type="a{sv}" direction="in" />
|
||||
</method>
|
||||
<method name="RemoveNotification">
|
||||
<arg type="s" direction="in" />
|
||||
<arg type="s" direction="in" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var GtkNotificationDaemon = new Lang.Class({
|
||||
Name: 'GtkNotificationDaemon',
|
||||
|
@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const BarLevel = imports.ui.barLevel;
|
||||
const Lang = imports.lang;
|
||||
const Layout = imports.ui.layout;
|
||||
const Main = imports.ui.main;
|
||||
@ -17,16 +18,18 @@ var LEVEL_ANIMATION_TIME = 0.1;
|
||||
|
||||
var LevelBar = new Lang.Class({
|
||||
Name: 'LevelBar',
|
||||
Extends: BarLevel.BarLevel,
|
||||
|
||||
_init() {
|
||||
this._level = 0;
|
||||
this._maxLevel = 100;
|
||||
|
||||
this.actor = new St.Bin({ style_class: 'level',
|
||||
x_align: St.Align.START,
|
||||
y_fill: true });
|
||||
this._bar = new St.Widget({ style_class: 'level-bar' });
|
||||
let params = {
|
||||
styleClass: 'level',
|
||||
}
|
||||
this.parent(this._level, params);
|
||||
|
||||
this.actor.set_child(this._bar);
|
||||
this.actor.accessible_name = _("Volume");
|
||||
|
||||
this.actor.connect('notify::width', () => { this.level = this.level; });
|
||||
},
|
||||
@ -36,12 +39,19 @@ var LevelBar = new Lang.Class({
|
||||
},
|
||||
|
||||
set level(value) {
|
||||
this._level = Math.max(0, Math.min(value, 100));
|
||||
this._level = Math.max(0, Math.min(value, this._maxLevel));
|
||||
|
||||
let alloc = this.actor.get_allocation_box();
|
||||
let newWidth = Math.round((alloc.x2 - alloc.x1) * this._level / 100);
|
||||
if (newWidth != this._bar.width)
|
||||
this._bar.width = newWidth;
|
||||
this.setValue(this._level / 100);
|
||||
},
|
||||
|
||||
get maxLevel() {
|
||||
return this._maxLevel;
|
||||
},
|
||||
|
||||
set maxLevel(value) {
|
||||
this._maxLevel = Math.max(100, value);
|
||||
|
||||
this.setMaximumValue(this._maxLevel / 100);
|
||||
}
|
||||
});
|
||||
|
||||
@ -140,6 +150,12 @@ var OsdWindow = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
setMaxLevel(maxLevel) {
|
||||
if (maxLevel === undefined)
|
||||
maxLevel = 100;
|
||||
this._level.maxLevel = maxLevel;
|
||||
},
|
||||
|
||||
show() {
|
||||
if (!this._icon.gicon)
|
||||
return;
|
||||
@ -189,6 +205,7 @@ var OsdWindow = new Lang.Class({
|
||||
this.actor.hide();
|
||||
this.setLabel(null);
|
||||
this.setLevel(null);
|
||||
this.setMaxLevel(null);
|
||||
},
|
||||
|
||||
_relayout() {
|
||||
@ -233,24 +250,25 @@ var OsdWindowManager = new Lang.Class({
|
||||
this._osdWindows.length = Main.layoutManager.monitors.length;
|
||||
},
|
||||
|
||||
_showOsdWindow(monitorIndex, icon, label, level) {
|
||||
_showOsdWindow(monitorIndex, icon, label, level, maxLevel) {
|
||||
this._osdWindows[monitorIndex].setIcon(icon);
|
||||
this._osdWindows[monitorIndex].setLabel(label);
|
||||
this._osdWindows[monitorIndex].setLevel(level);
|
||||
this._osdWindows[monitorIndex].setMaxLevel(maxLevel);
|
||||
this._osdWindows[monitorIndex].show();
|
||||
},
|
||||
|
||||
show(monitorIndex, icon, label, level) {
|
||||
show(monitorIndex, icon, label, level, maxLevel) {
|
||||
if (monitorIndex != -1) {
|
||||
for (let i = 0; i < this._osdWindows.length; i++) {
|
||||
if (i == monitorIndex)
|
||||
this._showOsdWindow(i, icon, label, level);
|
||||
this._showOsdWindow(i, icon, label, level, maxLevel);
|
||||
else
|
||||
this._osdWindows[i].cancel();
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i < this._osdWindows.length; i++)
|
||||
this._showOsdWindow(i, icon, label, level);
|
||||
this._showOsdWindow(i, icon, label, level, maxLevel);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -395,10 +395,8 @@ var Overview = new Lang.Class({
|
||||
if (!Main.layoutManager.primaryMonitor)
|
||||
return;
|
||||
|
||||
let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
|
||||
|
||||
this._coverPane.set_position(0, workArea.y);
|
||||
this._coverPane.set_size(workArea.width, workArea.height);
|
||||
this._coverPane.set_position(0, 0);
|
||||
this._coverPane.set_size(global.screen_width, global.screen_height);
|
||||
|
||||
this._updateBackgrounds();
|
||||
},
|
||||
|
@ -253,13 +253,23 @@ var ThumbnailsSlider = new Lang.Class({
|
||||
this.actor.add_actor(this._thumbnailsBox.actor);
|
||||
|
||||
Main.layoutManager.connect('monitors-changed', this._updateSlide.bind(this));
|
||||
global.workspace_manager.connect('active-workspace-changed',
|
||||
this._updateSlide.bind(this));
|
||||
global.workspace_manager.connect('notify::n-workspaces',
|
||||
this._updateSlide.bind(this));
|
||||
this.actor.connect('notify::hover', this._updateSlide.bind(this));
|
||||
this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
|
||||
},
|
||||
|
||||
_getAlwaysZoomOut() {
|
||||
// Always show the pager on hover or during a drag
|
||||
let alwaysZoomOut = this.actor.hover || this._inDrag;
|
||||
// Always show the pager on hover, during a drag, or if workspaces are
|
||||
// actually used, e.g. there are windows on any non-active workspace
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let alwaysZoomOut = this.actor.hover ||
|
||||
this._inDrag ||
|
||||
!Meta.prefs_get_dynamic_workspaces() ||
|
||||
workspaceManager.n_workspaces > 2 ||
|
||||
workspaceManager.get_active_workspace_index() != 0;
|
||||
|
||||
if (!alwaysZoomOut) {
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
@ -284,6 +294,11 @@ var ThumbnailsSlider = new Lang.Class({
|
||||
return child.get_theme_node().get_length('visible-width');
|
||||
},
|
||||
|
||||
_onDragEnd() {
|
||||
this.actor.sync_hover();
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_getSlide() {
|
||||
if (!this._visible)
|
||||
return 0;
|
||||
|
@ -313,6 +313,8 @@ var PadDiagram = new Lang.Class({
|
||||
_init(params) {
|
||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css');
|
||||
let [success, css, etag] = file.load_contents(null);
|
||||
if (css instanceof Uint8Array)
|
||||
css = imports.byteArray.toString(css);
|
||||
this._curEdited = null;
|
||||
this._prevEdited = null;
|
||||
this._css = css;
|
||||
@ -960,14 +962,15 @@ var PadOsd = new Lang.Class({
|
||||
});
|
||||
Signals.addSignalMethods(PadOsd.prototype);
|
||||
|
||||
const PadOsdIface = '<node> \
|
||||
<interface name="org.gnome.Shell.Wacom.PadOsd"> \
|
||||
<method name="Show"> \
|
||||
<arg name="device_node" direction="in" type="o"/> \
|
||||
<arg name="edition_mode" direction="in" type="b"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const PadOsdIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.Wacom.PadOsd">
|
||||
<method name="Show">
|
||||
<arg name="device_node" direction="in" type="o"/>
|
||||
<arg name="edition_mode" direction="in" type="b"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var PadOsdService = new Lang.Class({
|
||||
Name: 'PadOsdService',
|
||||
|
@ -307,8 +307,11 @@ var AppMenuButton = new Lang.Class({
|
||||
}
|
||||
}
|
||||
|
||||
let shellShowsAppMenu = this._gtkSettings.gtk_shell_shows_app_menu;
|
||||
Meta.prefs_set_show_fallback_app_menu(!shellShowsAppMenu);
|
||||
|
||||
let visible = (this._targetApp != null &&
|
||||
this._gtkSettings.gtk_shell_shows_app_menu &&
|
||||
shellShowsAppMenu &&
|
||||
!Main.overview.visibleTarget);
|
||||
if (visible)
|
||||
this.show();
|
||||
@ -710,6 +713,7 @@ var AggregateMenu = new Lang.Class({
|
||||
this._bluetooth = null;
|
||||
}
|
||||
|
||||
this._remoteAccess = new imports.ui.status.remoteAccess.RemoteAccessApplet();
|
||||
this._power = new imports.ui.status.power.Indicator();
|
||||
this._rfkill = new imports.ui.status.rfkill.Indicator();
|
||||
this._volume = new imports.ui.status.volume.Indicator();
|
||||
@ -730,6 +734,7 @@ var AggregateMenu = new Lang.Class({
|
||||
if (this._bluetooth) {
|
||||
this._indicators.add_child(this._bluetooth.indicators);
|
||||
}
|
||||
this._indicators.add_child(this._remoteAccess.indicators);
|
||||
this._indicators.add_child(this._rfkill.indicators);
|
||||
this._indicators.add_child(this._volume.indicators);
|
||||
this._indicators.add_child(this._power.indicators);
|
||||
@ -744,6 +749,7 @@ var AggregateMenu = new Lang.Class({
|
||||
if (this._bluetooth) {
|
||||
this.menu.addMenuItem(this._bluetooth.menu);
|
||||
}
|
||||
this.menu.addMenuItem(this._remoteAccess.menu);
|
||||
this.menu.addMenuItem(this._location.menu);
|
||||
this.menu.addMenuItem(this._rfkill.menu);
|
||||
this.menu.addMenuItem(this._power.menu);
|
||||
@ -773,6 +779,7 @@ var Panel = new Lang.Class({
|
||||
this.actor = new Shell.GenericContainer({ name: 'panel',
|
||||
reactive: true });
|
||||
this.actor._delegate = this;
|
||||
this.actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||
|
||||
this._sessionStyle = null;
|
||||
|
||||
|
@ -12,53 +12,55 @@ const Search = imports.ui.search;
|
||||
|
||||
const KEY_FILE_GROUP = 'Shell Search Provider';
|
||||
|
||||
const SearchProviderIface = '<node> \
|
||||
<interface name="org.gnome.Shell.SearchProvider"> \
|
||||
<method name="GetInitialResultSet"> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="as" direction="out" /> \
|
||||
</method> \
|
||||
<method name="GetSubsearchResultSet"> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="as" direction="out" /> \
|
||||
</method> \
|
||||
<method name="GetResultMetas"> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="aa{sv}" direction="out" /> \
|
||||
</method> \
|
||||
<method name="ActivateResult"> \
|
||||
<arg type="s" direction="in" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SearchProviderIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.SearchProvider">
|
||||
<method name="GetInitialResultSet">
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="as" direction="out" />
|
||||
</method>
|
||||
<method name="GetSubsearchResultSet">
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="as" direction="out" />
|
||||
</method>
|
||||
<method name="GetResultMetas">
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="aa{sv}" direction="out" />
|
||||
</method>
|
||||
<method name="ActivateResult">
|
||||
<arg type="s" direction="in" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const SearchProvider2Iface = '<node> \
|
||||
<interface name="org.gnome.Shell.SearchProvider2"> \
|
||||
<method name="GetInitialResultSet"> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="as" direction="out" /> \
|
||||
</method> \
|
||||
<method name="GetSubsearchResultSet"> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="as" direction="out" /> \
|
||||
</method> \
|
||||
<method name="GetResultMetas"> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="aa{sv}" direction="out" /> \
|
||||
</method> \
|
||||
<method name="ActivateResult"> \
|
||||
<arg type="s" direction="in" /> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="u" direction="in" /> \
|
||||
</method> \
|
||||
<method name="LaunchSearch"> \
|
||||
<arg type="as" direction="in" /> \
|
||||
<arg type="u" direction="in" /> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const SearchProvider2Iface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.SearchProvider2">
|
||||
<method name="GetInitialResultSet">
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="as" direction="out" />
|
||||
</method>
|
||||
<method name="GetSubsearchResultSet">
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="as" direction="out" />
|
||||
</method>
|
||||
<method name="GetResultMetas">
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="aa{sv}" direction="out" />
|
||||
</method>
|
||||
<method name="ActivateResult">
|
||||
<arg type="s" direction="in" />
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="u" direction="in" />
|
||||
</method>
|
||||
<method name="LaunchSearch">
|
||||
<arg type="as" direction="in" />
|
||||
<arg type="u" direction="in" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface);
|
||||
var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface);
|
||||
|
@ -62,7 +62,11 @@ var RunDialog = new Lang.Class({
|
||||
'rt': () => {
|
||||
Main.reloadThemeResource();
|
||||
Main.loadTheme();
|
||||
}
|
||||
},
|
||||
|
||||
'check_cloexec_fds': () => {
|
||||
Shell.util_check_cloexec_fds();
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -114,18 +118,16 @@ var RunDialog = new Lang.Class({
|
||||
|
||||
this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY,
|
||||
entry: this._entryText });
|
||||
this._entryText.connect('activate', (o) => {
|
||||
this.popModal();
|
||||
this._run(o.get_text(),
|
||||
Clutter.get_current_event().get_state() & Clutter.ModifierType.CONTROL_MASK);
|
||||
if (!this._commandError ||
|
||||
!this.pushModal())
|
||||
this.close();
|
||||
});
|
||||
this._entryText.connect('key-press-event', (o, e) => {
|
||||
let symbol = e.get_key_symbol();
|
||||
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||
this.popModal();
|
||||
this._run(o.get_text(),
|
||||
e.get_state() & Clutter.ModifierType.CONTROL_MASK);
|
||||
if (!this._commandError ||
|
||||
!this.pushModal())
|
||||
this.close();
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
if (symbol == Clutter.Tab) {
|
||||
let text = o.get_text();
|
||||
let prefix;
|
||||
|
@ -8,29 +8,30 @@ const Signals = imports.signals;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
|
||||
const ScreencastIface = '<node> \
|
||||
<interface name="org.gnome.Shell.Screencast"> \
|
||||
<method name="Screencast"> \
|
||||
<arg type="s" direction="in" name="file_template"/> \
|
||||
<arg type="a{sv}" direction="in" name="options"/> \
|
||||
<arg type="b" direction="out" name="success"/> \
|
||||
<arg type="s" direction="out" name="filename_used"/> \
|
||||
</method> \
|
||||
<method name="ScreencastArea"> \
|
||||
<arg type="i" direction="in" name="x"/> \
|
||||
<arg type="i" direction="in" name="y"/> \
|
||||
<arg type="i" direction="in" name="width"/> \
|
||||
<arg type="i" direction="in" name="height"/> \
|
||||
<arg type="s" direction="in" name="file_template"/> \
|
||||
<arg type="a{sv}" direction="in" name="options"/> \
|
||||
<arg type="b" direction="out" name="success"/> \
|
||||
<arg type="s" direction="out" name="filename_used"/> \
|
||||
</method> \
|
||||
<method name="StopScreencast"> \
|
||||
<arg type="b" direction="out" name="success"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ScreencastIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.Screencast">
|
||||
<method name="Screencast">
|
||||
<arg type="s" direction="in" name="file_template"/>
|
||||
<arg type="a{sv}" direction="in" name="options"/>
|
||||
<arg type="b" direction="out" name="success"/>
|
||||
<arg type="s" direction="out" name="filename_used"/>
|
||||
</method>
|
||||
<method name="ScreencastArea">
|
||||
<arg type="i" direction="in" name="x"/>
|
||||
<arg type="i" direction="in" name="y"/>
|
||||
<arg type="i" direction="in" name="width"/>
|
||||
<arg type="i" direction="in" name="height"/>
|
||||
<arg type="s" direction="in" name="file_template"/>
|
||||
<arg type="a{sv}" direction="in" name="options"/>
|
||||
<arg type="b" direction="out" name="success"/>
|
||||
<arg type="s" direction="out" name="filename_used"/>
|
||||
</method>
|
||||
<method name="StopScreencast">
|
||||
<arg type="b" direction="out" name="success"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var ScreencastService = new Lang.Class({
|
||||
Name: 'ScreencastService',
|
||||
|
@ -16,47 +16,51 @@ const Lightbox = imports.ui.lightbox;
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const ScreenshotIface = '<node> \
|
||||
<interface name="org.gnome.Shell.Screenshot"> \
|
||||
<method name="ScreenshotArea"> \
|
||||
<arg type="i" direction="in" name="x"/> \
|
||||
<arg type="i" direction="in" name="y"/> \
|
||||
<arg type="i" direction="in" name="width"/> \
|
||||
<arg type="i" direction="in" name="height"/> \
|
||||
<arg type="b" direction="in" name="flash"/> \
|
||||
<arg type="s" direction="in" name="filename"/> \
|
||||
<arg type="b" direction="out" name="success"/> \
|
||||
<arg type="s" direction="out" name="filename_used"/> \
|
||||
</method> \
|
||||
<method name="ScreenshotWindow"> \
|
||||
<arg type="b" direction="in" name="include_frame"/> \
|
||||
<arg type="b" direction="in" name="include_cursor"/> \
|
||||
<arg type="b" direction="in" name="flash"/> \
|
||||
<arg type="s" direction="in" name="filename"/> \
|
||||
<arg type="b" direction="out" name="success"/> \
|
||||
<arg type="s" direction="out" name="filename_used"/> \
|
||||
</method> \
|
||||
<method name="Screenshot"> \
|
||||
<arg type="b" direction="in" name="include_cursor"/> \
|
||||
<arg type="b" direction="in" name="flash"/> \
|
||||
<arg type="s" direction="in" name="filename"/> \
|
||||
<arg type="b" direction="out" name="success"/> \
|
||||
<arg type="s" direction="out" name="filename_used"/> \
|
||||
</method> \
|
||||
<method name="SelectArea"> \
|
||||
<arg type="i" direction="out" name="x"/> \
|
||||
<arg type="i" direction="out" name="y"/> \
|
||||
<arg type="i" direction="out" name="width"/> \
|
||||
<arg type="i" direction="out" name="height"/> \
|
||||
</method> \
|
||||
<method name="FlashArea"> \
|
||||
<arg type="i" direction="in" name="x"/> \
|
||||
<arg type="i" direction="in" name="y"/> \
|
||||
<arg type="i" direction="in" name="width"/> \
|
||||
<arg type="i" direction="in" name="height"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ScreenshotIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.Screenshot">
|
||||
<method name="ScreenshotArea">
|
||||
<arg type="i" direction="in" name="x"/>
|
||||
<arg type="i" direction="in" name="y"/>
|
||||
<arg type="i" direction="in" name="width"/>
|
||||
<arg type="i" direction="in" name="height"/>
|
||||
<arg type="b" direction="in" name="flash"/>
|
||||
<arg type="s" direction="in" name="filename"/>
|
||||
<arg type="b" direction="out" name="success"/>
|
||||
<arg type="s" direction="out" name="filename_used"/>
|
||||
</method>
|
||||
<method name="ScreenshotWindow">
|
||||
<arg type="b" direction="in" name="include_frame"/>
|
||||
<arg type="b" direction="in" name="include_cursor"/>
|
||||
<arg type="b" direction="in" name="flash"/>
|
||||
<arg type="s" direction="in" name="filename"/>
|
||||
<arg type="b" direction="out" name="success"/>
|
||||
<arg type="s" direction="out" name="filename_used"/>
|
||||
</method>
|
||||
<method name="Screenshot">
|
||||
<arg type="b" direction="in" name="include_cursor"/>
|
||||
<arg type="b" direction="in" name="flash"/>
|
||||
<arg type="s" direction="in" name="filename"/>
|
||||
<arg type="b" direction="out" name="success"/>
|
||||
<arg type="s" direction="out" name="filename_used"/>
|
||||
</method>
|
||||
<method name="SelectArea">
|
||||
<arg type="i" direction="out" name="x"/>
|
||||
<arg type="i" direction="out" name="y"/>
|
||||
<arg type="i" direction="out" name="width"/>
|
||||
<arg type="i" direction="out" name="height"/>
|
||||
</method>
|
||||
<method name="FlashArea">
|
||||
<arg type="i" direction="in" name="x"/>
|
||||
<arg type="i" direction="in" name="y"/>
|
||||
<arg type="i" direction="in" name="width"/>
|
||||
<arg type="i" direction="in" name="height"/>
|
||||
</method>
|
||||
<method name="PickColor">
|
||||
<arg type="a{sv}" direction="out" name="result"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var ScreenshotService = new Lang.Class({
|
||||
Name: 'ScreenshotService',
|
||||
@ -72,10 +76,13 @@ var ScreenshotService = new Lang.Class({
|
||||
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
},
|
||||
|
||||
_createScreenshot(invocation) {
|
||||
_createScreenshot(invocation, needsDisk=true) {
|
||||
let lockedDown = false;
|
||||
if (needsDisk)
|
||||
lockedDown = this._lockdownSettings.get_boolean('disable-save-to-disk')
|
||||
|
||||
let sender = invocation.get_sender();
|
||||
if (this._screenShooter.has(sender) ||
|
||||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
|
||||
if (this._screenShooter.has(sender) || lockedDown) {
|
||||
invocation.return_value(GLib.Variant.new('(bs)', [false, '']));
|
||||
return null;
|
||||
}
|
||||
@ -110,7 +117,7 @@ var ScreenshotService = new Lang.Class({
|
||||
y + height <= global.screen_height;
|
||||
},
|
||||
|
||||
_onScreenshotComplete(obj, result, area, filenameUsed, flash, invocation) {
|
||||
_onScreenshotComplete(result, area, filenameUsed, flash, invocation) {
|
||||
if (result) {
|
||||
if (flash) {
|
||||
let flashspot = new Flashspot(area);
|
||||
@ -157,9 +164,15 @@ var ScreenshotService = new Lang.Class({
|
||||
if (!screenshot)
|
||||
return;
|
||||
screenshot.screenshot_area (x, y, width, height, filename,
|
||||
(obj, result, area, filenameUsed) => {
|
||||
this._onScreenshotComplete(obj, result, area, filenameUsed,
|
||||
flash, invocation);
|
||||
(o, res) => {
|
||||
try {
|
||||
let [result, area, filenameUsed] =
|
||||
screenshot.screenshot_area_finish(res);
|
||||
this._onScreenshotComplete(result, area, filenameUsed,
|
||||
flash, invocation);
|
||||
} catch (e) {
|
||||
invocation.return_gerror (e);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@ -169,9 +182,15 @@ var ScreenshotService = new Lang.Class({
|
||||
if (!screenshot)
|
||||
return;
|
||||
screenshot.screenshot_window (include_frame, include_cursor, filename,
|
||||
(obj, result, area, filenameUsed) => {
|
||||
this._onScreenshotComplete(obj, result, area, filenameUsed,
|
||||
flash, invocation);
|
||||
(o, res) => {
|
||||
try {
|
||||
let [result, area, filenameUsed] =
|
||||
screenshot.screenshot_window_finish(res);
|
||||
this._onScreenshotComplete(result, area, filenameUsed,
|
||||
flash, invocation);
|
||||
} catch (e) {
|
||||
invocation.return_gerror (e);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@ -181,9 +200,15 @@ var ScreenshotService = new Lang.Class({
|
||||
if (!screenshot)
|
||||
return;
|
||||
screenshot.screenshot(include_cursor, filename,
|
||||
(obj, result, area, filenameUsed) => {
|
||||
this._onScreenshotComplete(obj, result, area, filenameUsed,
|
||||
flash, invocation);
|
||||
(o, res) => {
|
||||
try {
|
||||
let [result, area, filenameUsed] =
|
||||
screenshot.screenshot_finish(res);
|
||||
this._onScreenshotComplete(result, area, filenameUsed,
|
||||
flash, invocation);
|
||||
} catch (e) {
|
||||
invocation.return_gerror (e);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@ -215,6 +240,34 @@ var ScreenshotService = new Lang.Class({
|
||||
let flashspot = new Flashspot({ x : x, y : y, width: width, height: height});
|
||||
flashspot.fire();
|
||||
invocation.return_value(null);
|
||||
},
|
||||
|
||||
PickColorAsync(params, invocation) {
|
||||
let pickPixel = new PickPixel();
|
||||
pickPixel.show();
|
||||
pickPixel.connect('finished', (pickPixel, coords) => {
|
||||
if (coords) {
|
||||
let screenshot = this._createScreenshot(invocation, false);
|
||||
if (!screenshot)
|
||||
return;
|
||||
screenshot.pick_color(...coords, (o, res) => {
|
||||
let [success, color] = screenshot.pick_color_finish(res);
|
||||
let { red, green, blue } = color;
|
||||
let retval = GLib.Variant.new('(a{sv})', [{
|
||||
color: GLib.Variant.new('(ddd)', [
|
||||
red / 255.0,
|
||||
green / 255.0,
|
||||
blue / 255.0
|
||||
])
|
||||
}]);
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
invocation.return_value(retval);
|
||||
});
|
||||
} else {
|
||||
invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
|
||||
"Operation was cancelled");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -341,6 +394,54 @@ var SelectArea = new Lang.Class({
|
||||
});
|
||||
Signals.addSignalMethods(SelectArea.prototype);
|
||||
|
||||
var PickPixel = new Lang.Class({
|
||||
Name: 'PickPixel',
|
||||
|
||||
_init() {
|
||||
this._result = null;
|
||||
|
||||
this._group = new St.Widget({ visible: false,
|
||||
reactive: true });
|
||||
Main.uiGroup.add_actor(this._group);
|
||||
|
||||
this._grabHelper = new GrabHelper.GrabHelper(this._group);
|
||||
|
||||
this._group.connect('button-release-event',
|
||||
this._onButtonRelease.bind(this));
|
||||
|
||||
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
||||
coordinate: Clutter.BindCoordinate.ALL });
|
||||
this._group.add_constraint(constraint);
|
||||
},
|
||||
|
||||
show() {
|
||||
if (!this._grabHelper.grab({ actor: this._group,
|
||||
onUngrab: this._onUngrab.bind(this) }))
|
||||
return;
|
||||
|
||||
global.display.set_cursor(Meta.Cursor.CROSSHAIR);
|
||||
Main.uiGroup.set_child_above_sibling(this._group, null);
|
||||
this._group.visible = true;
|
||||
},
|
||||
|
||||
_onButtonRelease(actor, event) {
|
||||
this._result = event.get_coords();
|
||||
this._grabHelper.ungrab();
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onUngrab() {
|
||||
global.display.set_cursor(Meta.Cursor.DEFAULT);
|
||||
this.emit('finished', this._result);
|
||||
|
||||
GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
|
||||
this._group.destroy();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(PickPixel.prototype);
|
||||
|
||||
var FLASHSPOT_ANIMATION_OUT_TIME = 0.5; // seconds
|
||||
|
||||
var Flashspot = new Lang.Class({
|
||||
|
@ -68,19 +68,20 @@ function waitLeisure() {
|
||||
return callback => { cb = callback; };
|
||||
}
|
||||
|
||||
const PerfHelperIface = '<node> \
|
||||
<interface name="org.gnome.Shell.PerfHelper"> \
|
||||
<method name="CreateWindow"> \
|
||||
<arg type="i" direction="in" /> \
|
||||
<arg type="i" direction="in" /> \
|
||||
<arg type="b" direction="in" /> \
|
||||
<arg type="b" direction="in" /> \
|
||||
<arg type="b" direction="in" /> \
|
||||
</method> \
|
||||
<method name="WaitWindows" /> \
|
||||
<method name="DestroyWindows" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const PerfHelperIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.PerfHelper">
|
||||
<method name="CreateWindow">
|
||||
<arg type="i" direction="in" />
|
||||
<arg type="i" direction="in" />
|
||||
<arg type="b" direction="in" />
|
||||
<arg type="b" direction="in" />
|
||||
<arg type="b" direction="in" />
|
||||
</method>
|
||||
<method name="WaitWindows" />
|
||||
<method name="DestroyWindows" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface);
|
||||
function PerfHelper() {
|
||||
|
@ -117,6 +117,8 @@ function _loadMode(file, info) {
|
||||
let fileContent, success, tag, newMode;
|
||||
try {
|
||||
[success, fileContent, tag] = file.load_contents(null);
|
||||
if (fileContent instanceof Uint8Array)
|
||||
fileContent = imports.byteArray.toString(fileContent);
|
||||
newMode = JSON.parse(fileContent);
|
||||
} catch(e) {
|
||||
return;
|
||||
|
@ -14,70 +14,72 @@ const Main = imports.ui.main;
|
||||
const Screenshot = imports.ui.screenshot;
|
||||
const ViewSelector = imports.ui.viewSelector;
|
||||
|
||||
const GnomeShellIface = '<node> \
|
||||
<interface name="org.gnome.Shell"> \
|
||||
<method name="Eval"> \
|
||||
<arg type="s" direction="in" name="script" /> \
|
||||
<arg type="b" direction="out" name="success" /> \
|
||||
<arg type="s" direction="out" name="result" /> \
|
||||
</method> \
|
||||
<method name="FocusSearch"/> \
|
||||
<method name="ShowOSD"> \
|
||||
<arg type="a{sv}" direction="in" name="params"/> \
|
||||
</method> \
|
||||
<method name="ShowMonitorLabels"> \
|
||||
<arg type="a{uv}" direction="in" name="params" /> \
|
||||
</method> \
|
||||
<method name="ShowMonitorLabels2"> \
|
||||
<arg type="a{sv}" direction="in" name="params" /> \
|
||||
</method> \
|
||||
<method name="HideMonitorLabels" /> \
|
||||
<method name="FocusApp"> \
|
||||
<arg type="s" direction="in" name="id"/> \
|
||||
</method> \
|
||||
<method name="ShowApplications" /> \
|
||||
<method name="GrabAccelerator"> \
|
||||
<arg type="s" direction="in" name="accelerator"/> \
|
||||
<arg type="u" direction="in" name="flags"/> \
|
||||
<arg type="u" direction="out" name="action"/> \
|
||||
</method> \
|
||||
<method name="GrabAccelerators"> \
|
||||
<arg type="a(su)" direction="in" name="accelerators"/> \
|
||||
<arg type="au" direction="out" name="actions"/> \
|
||||
</method> \
|
||||
<method name="UngrabAccelerator"> \
|
||||
<arg type="u" direction="in" name="action"/> \
|
||||
<arg type="b" direction="out" name="success"/> \
|
||||
</method> \
|
||||
<signal name="AcceleratorActivated"> \
|
||||
<arg name="action" type="u" /> \
|
||||
<arg name="parameters" type="a{sv}" /> \
|
||||
</signal> \
|
||||
<property name="Mode" type="s" access="read" /> \
|
||||
<property name="OverviewActive" type="b" access="readwrite" /> \
|
||||
<property name="ShellVersion" type="s" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const GnomeShellIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell">
|
||||
<method name="Eval">
|
||||
<arg type="s" direction="in" name="script" />
|
||||
<arg type="b" direction="out" name="success" />
|
||||
<arg type="s" direction="out" name="result" />
|
||||
</method>
|
||||
<method name="FocusSearch"/>
|
||||
<method name="ShowOSD">
|
||||
<arg type="a{sv}" direction="in" name="params"/>
|
||||
</method>
|
||||
<method name="ShowMonitorLabels">
|
||||
<arg type="a{uv}" direction="in" name="params" />
|
||||
</method>
|
||||
<method name="ShowMonitorLabels2">
|
||||
<arg type="a{sv}" direction="in" name="params" />
|
||||
</method>
|
||||
<method name="HideMonitorLabels" />
|
||||
<method name="FocusApp">
|
||||
<arg type="s" direction="in" name="id"/>
|
||||
</method>
|
||||
<method name="ShowApplications" />
|
||||
<method name="GrabAccelerator">
|
||||
<arg type="s" direction="in" name="accelerator"/>
|
||||
<arg type="u" direction="in" name="flags"/>
|
||||
<arg type="u" direction="out" name="action"/>
|
||||
</method>
|
||||
<method name="GrabAccelerators">
|
||||
<arg type="a(su)" direction="in" name="accelerators"/>
|
||||
<arg type="au" direction="out" name="actions"/>
|
||||
</method>
|
||||
<method name="UngrabAccelerator">
|
||||
<arg type="u" direction="in" name="action"/>
|
||||
<arg type="b" direction="out" name="success"/>
|
||||
</method>
|
||||
<signal name="AcceleratorActivated">
|
||||
<arg name="action" type="u" />
|
||||
<arg name="parameters" type="a{sv}" />
|
||||
</signal>
|
||||
<property name="Mode" type="s" access="read" />
|
||||
<property name="OverviewActive" type="b" access="readwrite" />
|
||||
<property name="ShellVersion" type="s" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const ScreenSaverIface = '<node> \
|
||||
<interface name="org.gnome.ScreenSaver"> \
|
||||
<method name="Lock"> \
|
||||
</method> \
|
||||
<method name="GetActive"> \
|
||||
<arg name="active" direction="out" type="b" /> \
|
||||
</method> \
|
||||
<method name="SetActive"> \
|
||||
<arg name="value" direction="in" type="b" /> \
|
||||
</method> \
|
||||
<method name="GetActiveTime"> \
|
||||
<arg name="value" direction="out" type="u" /> \
|
||||
</method> \
|
||||
<signal name="ActiveChanged"> \
|
||||
<arg name="new_value" type="b" /> \
|
||||
</signal> \
|
||||
<signal name="WakeUpScreen" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ScreenSaverIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.ScreenSaver">
|
||||
<method name="Lock">
|
||||
</method>
|
||||
<method name="GetActive">
|
||||
<arg name="active" direction="out" type="b" />
|
||||
</method>
|
||||
<method name="SetActive">
|
||||
<arg name="value" direction="in" type="b" />
|
||||
</method>
|
||||
<method name="GetActiveTime">
|
||||
<arg name="value" direction="out" type="u" />
|
||||
</method>
|
||||
<signal name="ActiveChanged">
|
||||
<arg name="new_value" type="b" />
|
||||
</signal>
|
||||
<signal name="WakeUpScreen" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var GnomeShell = new Lang.Class({
|
||||
Name: 'GnomeShellDBus',
|
||||
@ -145,15 +147,20 @@ var GnomeShell = new Lang.Class({
|
||||
for (let param in params)
|
||||
params[param] = params[param].deep_unpack();
|
||||
|
||||
let monitorIndex = params['monitor'] || -1;
|
||||
let label = params['label'] || undefined;
|
||||
let level = params['level'] || undefined;
|
||||
let { monitor: monitorIndex,
|
||||
label,
|
||||
level,
|
||||
max_level: maxLevel,
|
||||
icon: serializedIcon } = params;
|
||||
|
||||
if (monitorIndex === undefined)
|
||||
monitorIndex = -1;
|
||||
|
||||
let icon = null;
|
||||
if (params['icon'])
|
||||
icon = Gio.Icon.new_for_string(params['icon']);
|
||||
if (serializedIcon)
|
||||
icon = Gio.Icon.new_for_string(serializedIcon);
|
||||
|
||||
Main.osdWindowManager.show(monitorIndex, icon, label, level);
|
||||
Main.osdWindowManager.show(monitorIndex, icon, label, level, maxLevel);
|
||||
},
|
||||
|
||||
FocusApp(id) {
|
||||
@ -288,43 +295,44 @@ var GnomeShell = new Lang.Class({
|
||||
ShellVersion: Config.PACKAGE_VERSION
|
||||
});
|
||||
|
||||
const GnomeShellExtensionsIface = '<node> \
|
||||
<interface name="org.gnome.Shell.Extensions"> \
|
||||
<method name="ListExtensions"> \
|
||||
<arg type="a{sa{sv}}" direction="out" name="extensions" /> \
|
||||
</method> \
|
||||
<method name="GetExtensionInfo"> \
|
||||
<arg type="s" direction="in" name="extension" /> \
|
||||
<arg type="a{sv}" direction="out" name="info" /> \
|
||||
</method> \
|
||||
<method name="GetExtensionErrors"> \
|
||||
<arg type="s" direction="in" name="extension" /> \
|
||||
<arg type="as" direction="out" name="errors" /> \
|
||||
</method> \
|
||||
<signal name="ExtensionStatusChanged"> \
|
||||
<arg type="s" name="uuid"/> \
|
||||
<arg type="i" name="state"/> \
|
||||
<arg type="s" name="error"/> \
|
||||
</signal> \
|
||||
<method name="InstallRemoteExtension"> \
|
||||
<arg type="s" direction="in" name="uuid"/> \
|
||||
<arg type="s" direction="out" name="result"/> \
|
||||
</method> \
|
||||
<method name="UninstallExtension"> \
|
||||
<arg type="s" direction="in" name="uuid"/> \
|
||||
<arg type="b" direction="out" name="success"/> \
|
||||
</method> \
|
||||
<method name="LaunchExtensionPrefs"> \
|
||||
<arg type="s" direction="in" name="uuid"/> \
|
||||
</method> \
|
||||
<method name="ReloadExtension"> \
|
||||
<arg type="s" direction="in" name="uuid"/> \
|
||||
</method> \
|
||||
<method name="CheckForUpdates"> \
|
||||
</method> \
|
||||
<property name="ShellVersion" type="s" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const GnomeShellExtensionsIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.Extensions">
|
||||
<method name="ListExtensions">
|
||||
<arg type="a{sa{sv}}" direction="out" name="extensions" />
|
||||
</method>
|
||||
<method name="GetExtensionInfo">
|
||||
<arg type="s" direction="in" name="extension" />
|
||||
<arg type="a{sv}" direction="out" name="info" />
|
||||
</method>
|
||||
<method name="GetExtensionErrors">
|
||||
<arg type="s" direction="in" name="extension" />
|
||||
<arg type="as" direction="out" name="errors" />
|
||||
</method>
|
||||
<signal name="ExtensionStatusChanged">
|
||||
<arg type="s" name="uuid"/>
|
||||
<arg type="i" name="state"/>
|
||||
<arg type="s" name="error"/>
|
||||
</signal>
|
||||
<method name="InstallRemoteExtension">
|
||||
<arg type="s" direction="in" name="uuid"/>
|
||||
<arg type="s" direction="out" name="result"/>
|
||||
</method>
|
||||
<method name="UninstallExtension">
|
||||
<arg type="s" direction="in" name="uuid"/>
|
||||
<arg type="b" direction="out" name="success"/>
|
||||
</method>
|
||||
<method name="LaunchExtensionPrefs">
|
||||
<arg type="s" direction="in" name="uuid"/>
|
||||
</method>
|
||||
<method name="ReloadExtension">
|
||||
<arg type="s" direction="in" name="uuid"/>
|
||||
</method>
|
||||
<method name="CheckForUpdates">
|
||||
</method>
|
||||
<property name="ShellVersion" type="s" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var GnomeShellExtensions = new Lang.Class({
|
||||
Name: 'GnomeShellExtensionsDBus',
|
||||
|
@ -436,38 +436,39 @@ var ShellProcessesDialog = new Lang.Class({
|
||||
});
|
||||
Signals.addSignalMethods(ShellProcessesDialog.prototype);
|
||||
|
||||
const GnomeShellMountOpIface = '<node> \
|
||||
<interface name="org.Gtk.MountOperationHandler"> \
|
||||
<method name="AskPassword"> \
|
||||
<arg type="s" direction="in" name="object_id"/> \
|
||||
<arg type="s" direction="in" name="message"/> \
|
||||
<arg type="s" direction="in" name="icon_name"/> \
|
||||
<arg type="s" direction="in" name="default_user"/> \
|
||||
<arg type="s" direction="in" name="default_domain"/> \
|
||||
<arg type="u" direction="in" name="flags"/> \
|
||||
<arg type="u" direction="out" name="response"/> \
|
||||
<arg type="a{sv}" direction="out" name="response_details"/> \
|
||||
</method> \
|
||||
<method name="AskQuestion"> \
|
||||
<arg type="s" direction="in" name="object_id"/> \
|
||||
<arg type="s" direction="in" name="message"/> \
|
||||
<arg type="s" direction="in" name="icon_name"/> \
|
||||
<arg type="as" direction="in" name="choices"/> \
|
||||
<arg type="u" direction="out" name="response"/> \
|
||||
<arg type="a{sv}" direction="out" name="response_details"/> \
|
||||
</method> \
|
||||
<method name="ShowProcesses"> \
|
||||
<arg type="s" direction="in" name="object_id"/> \
|
||||
<arg type="s" direction="in" name="message"/> \
|
||||
<arg type="s" direction="in" name="icon_name"/> \
|
||||
<arg type="ai" direction="in" name="application_pids"/> \
|
||||
<arg type="as" direction="in" name="choices"/> \
|
||||
<arg type="u" direction="out" name="response"/> \
|
||||
<arg type="a{sv}" direction="out" name="response_details"/> \
|
||||
</method> \
|
||||
<method name="Close"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const GnomeShellMountOpIface = `
|
||||
<node>
|
||||
<interface name="org.Gtk.MountOperationHandler">
|
||||
<method name="AskPassword">
|
||||
<arg type="s" direction="in" name="object_id"/>
|
||||
<arg type="s" direction="in" name="message"/>
|
||||
<arg type="s" direction="in" name="icon_name"/>
|
||||
<arg type="s" direction="in" name="default_user"/>
|
||||
<arg type="s" direction="in" name="default_domain"/>
|
||||
<arg type="u" direction="in" name="flags"/>
|
||||
<arg type="u" direction="out" name="response"/>
|
||||
<arg type="a{sv}" direction="out" name="response_details"/>
|
||||
</method>
|
||||
<method name="AskQuestion">
|
||||
<arg type="s" direction="in" name="object_id"/>
|
||||
<arg type="s" direction="in" name="message"/>
|
||||
<arg type="s" direction="in" name="icon_name"/>
|
||||
<arg type="as" direction="in" name="choices"/>
|
||||
<arg type="u" direction="out" name="response"/>
|
||||
<arg type="a{sv}" direction="out" name="response_details"/>
|
||||
</method>
|
||||
<method name="ShowProcesses">
|
||||
<arg type="s" direction="in" name="object_id"/>
|
||||
<arg type="s" direction="in" name="message"/>
|
||||
<arg type="s" direction="in" name="icon_name"/>
|
||||
<arg type="ai" direction="in" name="application_pids"/>
|
||||
<arg type="as" direction="in" name="choices"/>
|
||||
<arg type="u" direction="out" name="response"/>
|
||||
<arg type="a{sv}" direction="out" name="response_details"/>
|
||||
</method>
|
||||
<method name="Close"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var ShellMountOperationType = {
|
||||
NONE: 0,
|
||||
|
109
js/ui/slider.js
109
js/ui/slider.js
@ -7,55 +7,38 @@ const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const BarLevel = imports.ui.barLevel;
|
||||
|
||||
var SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */
|
||||
|
||||
var Slider = new Lang.Class({
|
||||
Name: "Slider",
|
||||
Extends: BarLevel.BarLevel,
|
||||
|
||||
_init(value) {
|
||||
if (isNaN(value))
|
||||
// Avoid spreading NaNs around
|
||||
throw TypeError('The slider value must be a number');
|
||||
this._value = Math.max(Math.min(value, 1), 0);
|
||||
this._sliderWidth = 0;
|
||||
let params = {
|
||||
styleClass: 'slider',
|
||||
canFocus: true,
|
||||
reactive: true,
|
||||
accessibleRole: Atk.Role.SLIDER,
|
||||
}
|
||||
this.parent(value, params)
|
||||
|
||||
this.actor = new St.DrawingArea({ style_class: 'slider',
|
||||
can_focus: true,
|
||||
reactive: true,
|
||||
accessible_role: Atk.Role.SLIDER });
|
||||
this.actor.connect('repaint', this._sliderRepaint.bind(this));
|
||||
this.actor.connect('button-press-event', this._startDragging.bind(this));
|
||||
this.actor.connect('touch-event', this._touchDragging.bind(this));
|
||||
this.actor.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||
this.actor.connect('key-press-event', this.onKeyPressEvent.bind(this));
|
||||
this.actor.connect('allocation-changed', (actor, box) => {
|
||||
this._sliderWidth = box.get_width();
|
||||
});
|
||||
|
||||
this._releaseId = this._motionId = 0;
|
||||
this._dragging = false;
|
||||
|
||||
this._customAccessible = St.GenericAccessible.new_for_actor(this.actor);
|
||||
this.actor.set_accessible(this._customAccessible);
|
||||
|
||||
this._customAccessible.connect('get-current-value', this._getCurrentValue.bind(this));
|
||||
this._customAccessible.connect('get-minimum-value', this._getMinimumValue.bind(this));
|
||||
this._customAccessible.connect('get-maximum-value', this._getMaximumValue.bind(this));
|
||||
this._customAccessible.connect('get-minimum-increment', this._getMinimumIncrement.bind(this));
|
||||
this._customAccessible.connect('set-current-value', this._setCurrentValue.bind(this));
|
||||
|
||||
this.connect('value-changed', this._valueChanged.bind(this));
|
||||
},
|
||||
|
||||
setValue(value) {
|
||||
if (isNaN(value))
|
||||
throw TypeError('The slider value must be a number');
|
||||
_barLevelRepaint(area) {
|
||||
this.parent(area);
|
||||
|
||||
this._value = Math.max(Math.min(value, 1), 0);
|
||||
this.actor.queue_repaint();
|
||||
},
|
||||
|
||||
_sliderRepaint(area) {
|
||||
// Add handle
|
||||
let cr = area.get_context();
|
||||
let themeNode = area.get_theme_node();
|
||||
let [width, height] = area.get_surface_size();
|
||||
@ -66,41 +49,9 @@ var Slider = new Lang.Class({
|
||||
let [hasHandleColor, handleBorderColor] =
|
||||
themeNode.lookup_color('-slider-handle-border-color', false);
|
||||
|
||||
let sliderHeight = themeNode.get_length('-slider-height');
|
||||
|
||||
let sliderBorderWidth = themeNode.get_length('-slider-border-width');
|
||||
let sliderBorderRadius = Math.min(width, sliderHeight) / 2;
|
||||
|
||||
let sliderBorderColor = themeNode.get_color('-slider-border-color');
|
||||
let sliderColor = themeNode.get_color('-slider-background-color');
|
||||
|
||||
let sliderActiveBorderColor = themeNode.get_color('-slider-active-border-color');
|
||||
let sliderActiveColor = themeNode.get_color('-slider-active-background-color');
|
||||
|
||||
const TAU = Math.PI * 2;
|
||||
|
||||
let handleX = handleRadius + (width - 2 * handleRadius) * this._value;
|
||||
|
||||
cr.arc(sliderBorderRadius + sliderBorderWidth, height / 2, sliderBorderRadius, TAU * 1/4, TAU * 3/4);
|
||||
cr.lineTo(handleX, (height - sliderHeight) / 2);
|
||||
cr.lineTo(handleX, (height + sliderHeight) / 2);
|
||||
cr.lineTo(sliderBorderRadius + sliderBorderWidth, (height + sliderHeight) / 2);
|
||||
Clutter.cairo_set_source_color(cr, sliderActiveColor);
|
||||
cr.fillPreserve();
|
||||
Clutter.cairo_set_source_color(cr, sliderActiveBorderColor);
|
||||
cr.setLineWidth(sliderBorderWidth);
|
||||
cr.stroke();
|
||||
|
||||
cr.arc(width - sliderBorderRadius - sliderBorderWidth, height / 2, sliderBorderRadius, TAU * 3/4, TAU * 1/4);
|
||||
cr.lineTo(handleX, (height + sliderHeight) / 2);
|
||||
cr.lineTo(handleX, (height - sliderHeight) / 2);
|
||||
cr.lineTo(width - sliderBorderRadius - sliderBorderWidth, (height - sliderHeight) / 2);
|
||||
Clutter.cairo_set_source_color(cr, sliderColor);
|
||||
cr.fillPreserve();
|
||||
Clutter.cairo_set_source_color(cr, sliderBorderColor);
|
||||
cr.setLineWidth(sliderBorderWidth);
|
||||
cr.stroke();
|
||||
|
||||
let handleX = handleRadius + (width - 2 * handleRadius) * this._value / this._maxValue;
|
||||
let handleY = height / 2;
|
||||
|
||||
let color = themeNode.get_foreground_color();
|
||||
@ -208,7 +159,7 @@ var Slider = new Lang.Class({
|
||||
delta = -dy * SLIDER_SCROLL_STEP;
|
||||
}
|
||||
|
||||
this._value = Math.min(Math.max(0, this._value + delta), 1);
|
||||
this._value = Math.min(Math.max(0, this._value + delta), this._maxValue);
|
||||
|
||||
this.actor.queue_repaint();
|
||||
this.emit('value-changed', this._value);
|
||||
@ -230,7 +181,7 @@ var Slider = new Lang.Class({
|
||||
let key = event.get_key_symbol();
|
||||
if (key == Clutter.KEY_Right || key == Clutter.KEY_Left) {
|
||||
let delta = key == Clutter.KEY_Right ? 0.1 : -0.1;
|
||||
this._value = Math.max(0, Math.min(this._value + delta, 1));
|
||||
this._value = Math.max(0, Math.min(this._value + delta, this._maxValue));
|
||||
this.actor.queue_repaint();
|
||||
this.emit('drag-begin');
|
||||
this.emit('value-changed', this._value);
|
||||
@ -246,7 +197,7 @@ var Slider = new Lang.Class({
|
||||
relX = absX - sliderX;
|
||||
relY = absY - sliderY;
|
||||
|
||||
let width = this._sliderWidth;
|
||||
let width = this._barLevelWidth;
|
||||
let handleRadius = this.actor.get_theme_node().get_length('-slider-handle-radius');
|
||||
|
||||
let newvalue;
|
||||
@ -256,38 +207,14 @@ var Slider = new Lang.Class({
|
||||
newvalue = 1;
|
||||
else
|
||||
newvalue = (relX - handleRadius) / (width - 2 * handleRadius);
|
||||
this._value = newvalue;
|
||||
this._value = newvalue * this._maxValue;
|
||||
this.actor.queue_repaint();
|
||||
this.emit('value-changed', this._value);
|
||||
},
|
||||
|
||||
_getCurrentValue(actor) {
|
||||
return this._value;
|
||||
},
|
||||
|
||||
_getMinimumValue(actor) {
|
||||
return 0;
|
||||
},
|
||||
|
||||
_getMaximumValue(actor) {
|
||||
return 1;
|
||||
},
|
||||
|
||||
_getMinimumIncrement(actor) {
|
||||
return 0.1;
|
||||
},
|
||||
|
||||
_setCurrentValue(actor, value) {
|
||||
this._value = value;
|
||||
},
|
||||
|
||||
_valueChanged(slider, value, property) {
|
||||
this._customAccessible.notify ("accessible-value");
|
||||
},
|
||||
|
||||
get value() {
|
||||
return this._value;
|
||||
}
|
||||
});
|
||||
|
||||
Signals.addSignalMethods(Slider.prototype);
|
||||
|
@ -11,13 +11,14 @@ const PopupMenu = imports.ui.popupMenu;
|
||||
const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
|
||||
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
|
||||
|
||||
const RfkillManagerInterface = '<node> \
|
||||
<interface name="org.gnome.SettingsDaemon.Rfkill"> \
|
||||
<property name="BluetoothAirplaneMode" type="b" access="readwrite" /> \
|
||||
<property name="BluetoothHasAirplaneMode" type="b" access="read" /> \
|
||||
<property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const RfkillManagerInterface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SettingsDaemon.Rfkill">
|
||||
<property name="BluetoothAirplaneMode" type="b" access="readwrite" />
|
||||
<property name="BluetoothHasAirplaneMode" type="b" access="read" />
|
||||
<property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);
|
||||
|
||||
|
@ -11,11 +11,12 @@ const Slider = imports.ui.slider;
|
||||
const BUS_NAME = 'org.gnome.SettingsDaemon.Power';
|
||||
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power';
|
||||
|
||||
const BrightnessInterface = '<node> \
|
||||
<interface name="org.gnome.SettingsDaemon.Power.Screen"> \
|
||||
<property name="Brightness" type="i" access="readwrite"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const BrightnessInterface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SettingsDaemon.Power.Screen">
|
||||
<property name="Brightness" type="i" access="readwrite"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface);
|
||||
|
||||
|
@ -40,29 +40,31 @@ function accuracyLevelToString(accuracyLevel) {
|
||||
return 'NONE';
|
||||
}
|
||||
|
||||
var GeoclueIface = '<node> \
|
||||
<interface name="org.freedesktop.GeoClue2.Manager"> \
|
||||
<property name="InUse" type="b" access="read"/> \
|
||||
<property name="AvailableAccuracyLevel" type="u" access="read"/> \
|
||||
<method name="AddAgent"> \
|
||||
<arg name="id" type="s" direction="in"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
var GeoclueIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.GeoClue2.Manager">
|
||||
<property name="InUse" type="b" access="read"/>
|
||||
<property name="AvailableAccuracyLevel" type="u" access="read"/>
|
||||
<method name="AddAgent">
|
||||
<arg name="id" type="s" direction="in"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const GeoclueManager = Gio.DBusProxy.makeProxyWrapper(GeoclueIface);
|
||||
|
||||
var AgentIface = '<node> \
|
||||
<interface name="org.freedesktop.GeoClue2.Agent"> \
|
||||
<property name="MaxAccuracyLevel" type="u" access="read"/> \
|
||||
<method name="AuthorizeApp"> \
|
||||
<arg name="desktop_id" type="s" direction="in"/> \
|
||||
<arg name="req_accuracy_level" type="u" direction="in"/> \
|
||||
<arg name="authorized" type="b" direction="out"/> \
|
||||
<arg name="allowed_accuracy_level" type="u" direction="out"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
var AgentIface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.GeoClue2.Agent">
|
||||
<property name="MaxAccuracyLevel" type="u" access="read"/>
|
||||
<method name="AuthorizeApp">
|
||||
<arg name="desktop_id" type="s" direction="in"/>
|
||||
<arg name="req_accuracy_level" type="u" direction="in"/>
|
||||
<arg name="authorized" type="b" direction="out"/>
|
||||
<arg name="allowed_accuracy_level" type="u" direction="out"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
var Indicator = new Lang.Class({
|
||||
Name: 'LocationIndicator',
|
||||
|
@ -51,25 +51,26 @@ var PortalHelperResult = {
|
||||
RECHECK: 2
|
||||
};
|
||||
|
||||
const PortalHelperIface = '<node> \
|
||||
<interface name="org.gnome.Shell.PortalHelper"> \
|
||||
<method name="Authenticate"> \
|
||||
<arg type="o" direction="in" name="connection" /> \
|
||||
<arg type="s" direction="in" name="url" /> \
|
||||
<arg type="u" direction="in" name="timestamp" /> \
|
||||
</method> \
|
||||
<method name="Close"> \
|
||||
<arg type="o" direction="in" name="connection" /> \
|
||||
</method> \
|
||||
<method name="Refresh"> \
|
||||
<arg type="o" direction="in" name="connection" /> \
|
||||
</method> \
|
||||
<signal name="Done"> \
|
||||
<arg type="o" name="connection" /> \
|
||||
<arg type="u" name="result" /> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const PortalHelperIface = `
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.PortalHelper">
|
||||
<method name="Authenticate">
|
||||
<arg type="o" direction="in" name="connection" />
|
||||
<arg type="s" direction="in" name="url" />
|
||||
<arg type="u" direction="in" name="timestamp" />
|
||||
</method>
|
||||
<method name="Close">
|
||||
<arg type="o" direction="in" name="connection" />
|
||||
</method>
|
||||
<method name="Refresh">
|
||||
<arg type="o" direction="in" name="connection" />
|
||||
</method>
|
||||
<signal name="Done">
|
||||
<arg type="o" name="connection" />
|
||||
<arg type="u" name="result" />
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
const PortalHelperProxy = Gio.DBusProxy.makeProxyWrapper(PortalHelperIface);
|
||||
|
||||
function signalToIcon(value) {
|
||||
|
@ -10,12 +10,13 @@ const PopupMenu = imports.ui.popupMenu;
|
||||
const BUS_NAME = 'org.gnome.SettingsDaemon.Color';
|
||||
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color';
|
||||
|
||||
const ColorInterface = '<node> \
|
||||
<interface name="org.gnome.SettingsDaemon.Color"> \
|
||||
<property name="DisabledUntilTomorrow" type="b" access="readwrite"/> \
|
||||
<property name="NightLightActive" type="b" access="read"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const ColorInterface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SettingsDaemon.Color">
|
||||
<property name="DisabledUntilTomorrow" type="b" access="readwrite"/>
|
||||
<property name="NightLightActive" type="b" access="read"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const ColorProxy = Gio.DBusProxy.makeProxyWrapper(ColorInterface);
|
||||
|
||||
|
@ -13,17 +13,18 @@ const PopupMenu = imports.ui.popupMenu;
|
||||
const BUS_NAME = 'org.freedesktop.UPower';
|
||||
const OBJECT_PATH = '/org/freedesktop/UPower/devices/DisplayDevice';
|
||||
|
||||
const DisplayDeviceInterface = '<node> \
|
||||
<interface name="org.freedesktop.UPower.Device"> \
|
||||
<property name="Type" type="u" access="read"/> \
|
||||
<property name="State" type="u" access="read"/> \
|
||||
<property name="Percentage" type="d" access="read"/> \
|
||||
<property name="TimeToEmpty" type="x" access="read"/> \
|
||||
<property name="TimeToFull" type="x" access="read"/> \
|
||||
<property name="IsPresent" type="b" access="read"/> \
|
||||
<property name="IconName" type="s" access="read"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const DisplayDeviceInterface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.UPower.Device">
|
||||
<property name="Type" type="u" access="read"/>
|
||||
<property name="State" type="u" access="read"/>
|
||||
<property name="Percentage" type="d" access="read"/>
|
||||
<property name="TimeToEmpty" type="x" access="read"/>
|
||||
<property name="TimeToFull" type="x" access="read"/>
|
||||
<property name="IsPresent" type="b" access="read"/>
|
||||
<property name="IconName" type="s" access="read"/>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface);
|
||||
|
||||
|
81
js/ui/status/remoteAccess.js
Normal file
81
js/ui/status/remoteAccess.js
Normal file
@ -0,0 +1,81 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
var RemoteAccessApplet = new Lang.Class({
|
||||
Name: 'RemoteAccessApplet',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
let backend = Meta.get_backend();
|
||||
let controller = backend.get_remote_access_controller();
|
||||
|
||||
if (!controller)
|
||||
return;
|
||||
|
||||
// We can't possibly know about all types of screen sharing on X11, so
|
||||
// showing these controls on X11 might give a false sense of security.
|
||||
// Thus, only enable these controls when using Wayland, where we are
|
||||
// in control of sharing.
|
||||
if (!Meta.is_wayland_compositor())
|
||||
return;
|
||||
|
||||
this._handles = new Set();
|
||||
this._indicator = null;
|
||||
this._menuSection = null;
|
||||
|
||||
controller.connect('new-handle', (controller, handle) => {
|
||||
this._onNewHandle(handle);
|
||||
});
|
||||
},
|
||||
|
||||
_ensureControls() {
|
||||
if (this._indicator)
|
||||
return;
|
||||
|
||||
this._indicator = this._addIndicator();
|
||||
this._indicator.icon_name = 'screen-shared-symbolic';
|
||||
this._indicator.add_style_class_name('remote-access-indicator');
|
||||
this._item =
|
||||
new PopupMenu.PopupSubMenuMenuItem(_("Screen is Being Shared"),
|
||||
true);
|
||||
this._item.menu.addAction(_("Turn off"),
|
||||
() => {
|
||||
for (let handle of this._handles)
|
||||
handle.stop();
|
||||
});
|
||||
this._item.icon.icon_name = 'screen-shared-symbolic';
|
||||
this.menu.addMenuItem(this._item);
|
||||
},
|
||||
|
||||
_sync() {
|
||||
if (this._handles.size == 0) {
|
||||
this._indicator.visible = false;
|
||||
this._item.actor.visible = false;
|
||||
} else {
|
||||
this._indicator.visible = true;
|
||||
this._item.actor.visible = true;
|
||||
}
|
||||
},
|
||||
|
||||
_onStopped(handle) {
|
||||
this._handles.delete(handle);
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_onNewHandle(handle) {
|
||||
this._handles.add(handle);
|
||||
handle.connect('stopped', this._onStopped.bind(this));
|
||||
|
||||
if (this._handles.size == 1) {
|
||||
this._ensureControls();
|
||||
this._sync();
|
||||
}
|
||||
},
|
||||
});
|
@ -11,13 +11,14 @@ const PopupMenu = imports.ui.popupMenu;
|
||||
const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
|
||||
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
|
||||
|
||||
const RfkillManagerInterface = '<node> \
|
||||
<interface name="org.gnome.SettingsDaemon.Rfkill"> \
|
||||
<property name="AirplaneMode" type="b" access="readwrite" /> \
|
||||
<property name="HardwareAirplaneMode" type="b" access="read" /> \
|
||||
<property name="ShouldShowAirplaneMode" type="b" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const RfkillManagerInterface = `
|
||||
<node>
|
||||
<interface name="org.gnome.SettingsDaemon.Rfkill">
|
||||
<property name="AirplaneMode" type="b" access="readwrite" />
|
||||
<property name="HardwareAirplaneMode" type="b" access="read" />
|
||||
<property name="ShouldShowAirplaneMode" type="b" access="read" />
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);
|
||||
|
||||
|
@ -261,8 +261,19 @@ var Indicator = new Lang.Class({
|
||||
item = new PopupMenu.PopupBaseMenuItem({ reactive: false,
|
||||
can_focus: false });
|
||||
|
||||
this._settingsAction = this._createActionButton('preferences-system-symbolic', _("Settings"));
|
||||
this._settingsAction.connect('clicked', () => { this._onSettingsClicked(); });
|
||||
let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app(
|
||||
'gnome-control-center.desktop'
|
||||
);
|
||||
if (app) {
|
||||
let [icon, name] = [app.app_info.get_icon().names[0],
|
||||
app.get_name()];
|
||||
this._settingsAction = this._createActionButton(icon, name);
|
||||
this._settingsAction.connect('clicked',
|
||||
this._onSettingsClicked.bind(this));
|
||||
} else {
|
||||
log('Missing required core component Settings, expect trouble…');
|
||||
this._settingsAction = new St.Widget();
|
||||
}
|
||||
item.actor.add(this._settingsAction, { expand: true, x_fill: false });
|
||||
|
||||
this._orientationLockAction = this._createActionButton('', _("Orientation Lock"));
|
||||
@ -280,7 +291,7 @@ var Indicator = new Lang.Class({
|
||||
'icon-name',
|
||||
bindFlags);
|
||||
|
||||
this._lockScreenAction = this._createActionButton('changes-prevent-symbolic', _("Lock"));
|
||||
this._lockScreenAction = this._createActionButton('changes-prevent', _("Lock"));
|
||||
this._lockScreenAction.connect('clicked', () => {
|
||||
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
|
||||
this._systemActions.activateLockScreen();
|
||||
@ -291,7 +302,7 @@ var Indicator = new Lang.Class({
|
||||
'visible',
|
||||
bindFlags);
|
||||
|
||||
this._suspendAction = this._createActionButton('media-playback-pause-symbolic', _("Suspend"));
|
||||
this._suspendAction = this._createActionButton('media-playback-pause', _("Suspend"));
|
||||
this._suspendAction.connect('clicked', () => {
|
||||
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
|
||||
this._systemActions.activateSuspend();
|
||||
@ -301,7 +312,7 @@ var Indicator = new Lang.Class({
|
||||
'visible',
|
||||
bindFlags);
|
||||
|
||||
this._powerOffAction = this._createActionButton('system-shutdown-symbolic', _("Power Off"));
|
||||
this._powerOffAction = this._createActionButton('system-shutdown', _("Power Off"));
|
||||
this._powerOffAction.connect('clicked', () => {
|
||||
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
|
||||
this._systemActions.activatePowerOff();
|
||||
@ -330,8 +341,7 @@ var Indicator = new Lang.Class({
|
||||
|
||||
_onSettingsClicked() {
|
||||
this.menu.itemActivated();
|
||||
let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop');
|
||||
Main.overview.hide();
|
||||
app.activate();
|
||||
this._settingsApp.activate();
|
||||
}
|
||||
});
|
||||
|
@ -14,40 +14,42 @@ const PanelMenu = imports.ui.panelMenu;
|
||||
|
||||
/* Keep in sync with data/org.freedesktop.bolt.xml */
|
||||
|
||||
const BoltClientInterface = '<node> \
|
||||
<interface name="org.freedesktop.bolt1.Manager"> \
|
||||
<property name="Probing" type="b" access="read"></property> \
|
||||
<property name="AuthMode" type="s" access="readwrite"></property> \
|
||||
<method name="EnrollDevice"> \
|
||||
<arg type="s" name="uid" direction="in"> </arg> \
|
||||
<arg type="s" name="policy" direction="in"> </arg> \
|
||||
<arg type="s" name="flags" direction="in"> </arg> \
|
||||
<arg name="device" direction="out" type="o"> </arg> \
|
||||
</method> \
|
||||
<signal name="DeviceAdded"> \
|
||||
<arg name="device" type="o"> </arg> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const BoltClientInterface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.bolt1.Manager">
|
||||
<property name="Probing" type="b" access="read"></property>
|
||||
<property name="AuthMode" type="s" access="readwrite"></property>
|
||||
<method name="EnrollDevice">
|
||||
<arg type="s" name="uid" direction="in"> </arg>
|
||||
<arg type="s" name="policy" direction="in"> </arg>
|
||||
<arg type="s" name="flags" direction="in"> </arg>
|
||||
<arg name="device" direction="out" type="o"> </arg>
|
||||
</method>
|
||||
<signal name="DeviceAdded">
|
||||
<arg name="device" type="o"> </arg>
|
||||
</signal>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const BoltDeviceInterface = '<node> \
|
||||
<interface name="org.freedesktop.bolt1.Device"> \
|
||||
<property name="Uid" type="s" access="read"></property> \
|
||||
<property name="Name" type="s" access="read"></property> \
|
||||
<property name="Vendor" type="s" access="read"></property> \
|
||||
<property name="Type" type="s" access="read"></property> \
|
||||
<property name="Status" type="s" access="read"></property> \
|
||||
<property name="Parent" type="s" access="read"></property> \
|
||||
<property name="SysfsPath" type="s" access="read"></property> \
|
||||
<property name="Stored" type="b" access="read"></property> \
|
||||
<property name="Policy" type="s" access="read"></property> \
|
||||
<property name="Key" type="s" access="read"></property> \
|
||||
<property name="Label" type="s" access="read"></property> \
|
||||
<property name="ConnectTime" type="t" access="read"></property> \
|
||||
<property name="AuthorizeTime" type="t" access="read"></property> \
|
||||
<property name="StoreTime" type="t" access="read"></property> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const BoltDeviceInterface = `
|
||||
<node>
|
||||
<interface name="org.freedesktop.bolt1.Device">
|
||||
<property name="Uid" type="s" access="read"></property>
|
||||
<property name="Name" type="s" access="read"></property>
|
||||
<property name="Vendor" type="s" access="read"></property>
|
||||
<property name="Type" type="s" access="read"></property>
|
||||
<property name="Status" type="s" access="read"></property>
|
||||
<property name="Parent" type="s" access="read"></property>
|
||||
<property name="SysfsPath" type="s" access="read"></property>
|
||||
<property name="Stored" type="b" access="read"></property>
|
||||
<property name="Policy" type="s" access="read"></property>
|
||||
<property name="Key" type="s" access="read"></property>
|
||||
<property name="Label" type="s" access="read"></property>
|
||||
<property name="ConnectTime" type="t" access="read"></property>
|
||||
<property name="AuthorizeTime" type="t" access="read"></property>
|
||||
<property name="StoreTime" type="t" access="read"></property>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface);
|
||||
|
||||
|
@ -12,6 +12,8 @@ const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Slider = imports.ui.slider;
|
||||
|
||||
const ALLOW_AMPLIFIED_VOLUME_KEY = 'allow-volume-above-100-percent';
|
||||
|
||||
var VOLUME_NOTIFY_ID = 1;
|
||||
|
||||
// Each Gvc.MixerControl is a connection to PulseAudio,
|
||||
@ -36,6 +38,11 @@ var StreamSlider = new Lang.Class({
|
||||
this.item = new PopupMenu.PopupBaseMenuItem({ activate: false });
|
||||
|
||||
this._slider = new Slider.Slider(0);
|
||||
|
||||
this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound' });
|
||||
this._soundSettings.connect('changed::' + ALLOW_AMPLIFIED_VOLUME_KEY, this._amplifySettingsChanged.bind(this));
|
||||
this._amplifySettingsChanged();
|
||||
|
||||
this._slider.connect('value-changed', this._sliderChanged.bind(this));
|
||||
this._slider.connect('drag-end', this._notifyVolumeChange.bind(this));
|
||||
|
||||
@ -135,21 +142,40 @@ var StreamSlider = new Lang.Class({
|
||||
this.emit('stream-updated');
|
||||
},
|
||||
|
||||
_amplifySettingsChanged() {
|
||||
this._allowAmplified = this._soundSettings.get_boolean(ALLOW_AMPLIFIED_VOLUME_KEY);
|
||||
|
||||
if (this._allowAmplified)
|
||||
this._slider.setMaximumValue(this.getMaxLevel() / 100);
|
||||
else
|
||||
this._slider.setMaximumValue(1);
|
||||
|
||||
if (this._stream)
|
||||
this._updateVolume();
|
||||
},
|
||||
|
||||
getIcon() {
|
||||
if (!this._stream)
|
||||
return null;
|
||||
|
||||
let icons = ["audio-volume-muted-symbolic",
|
||||
"audio-volume-low-symbolic",
|
||||
"audio-volume-medium-symbolic",
|
||||
"audio-volume-high-symbolic",
|
||||
"audio-volume-overamplified-symbolic"];
|
||||
|
||||
let volume = this._stream.volume;
|
||||
let n;
|
||||
if (this._stream.is_muted || volume <= 0) {
|
||||
return 'audio-volume-muted-symbolic';
|
||||
n = 0;
|
||||
} else {
|
||||
let n = Math.floor(3 * volume / this._control.get_vol_max_norm()) + 1;
|
||||
if (n < 2)
|
||||
return 'audio-volume-low-symbolic';
|
||||
if (n >= 3)
|
||||
return 'audio-volume-high-symbolic';
|
||||
return 'audio-volume-medium-symbolic';
|
||||
n = Math.ceil(3 * volume / this._control.get_vol_max_norm());
|
||||
if (n < 1)
|
||||
n = 1;
|
||||
else if (n > 3)
|
||||
n = 4;
|
||||
}
|
||||
return icons[n];
|
||||
},
|
||||
|
||||
getLevel() {
|
||||
@ -157,6 +183,14 @@ var StreamSlider = new Lang.Class({
|
||||
return null;
|
||||
|
||||
return 100 * this._stream.volume / this._control.get_vol_max_norm();
|
||||
},
|
||||
|
||||
getMaxLevel() {
|
||||
let maxVolume = this._control.get_vol_max_norm();
|
||||
if (this._allowAmplified)
|
||||
maxVolume = this._control.get_vol_max_amplified();
|
||||
|
||||
return 100 * maxVolume / this._control.get_vol_max_norm();
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(StreamSlider.prototype);
|
||||
@ -310,6 +344,10 @@ var VolumeMenu = new Lang.Class({
|
||||
|
||||
getLevel() {
|
||||
return this._output.getLevel();
|
||||
},
|
||||
|
||||
getMaxLevel() {
|
||||
return this._output.getMaxLevel();
|
||||
}
|
||||
});
|
||||
|
||||
@ -346,8 +384,9 @@ var Indicator = new Lang.Class({
|
||||
return result;
|
||||
|
||||
let gicon = new Gio.ThemedIcon({ name: this._volumeMenu.getIcon() });
|
||||
let level = this._volumeMenu.getLevel();
|
||||
Main.osdWindowManager.show(-1, gicon, null, level);
|
||||
let level = parseInt(this._volumeMenu.getLevel());
|
||||
let maxLevel = parseInt(this._volumeMenu.getMaxLevel());
|
||||
Main.osdWindowManager.show(-1, gicon, null, level, maxLevel);
|
||||
return result;
|
||||
}
|
||||
});
|
||||
|
@ -230,14 +230,14 @@ var ViewSelector = new Lang.Class({
|
||||
|
||||
Main.wm.addKeybinding('toggle-application-view',
|
||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
||||
Shell.ActionMode.NORMAL |
|
||||
Shell.ActionMode.OVERVIEW,
|
||||
this._toggleAppsPage.bind(this));
|
||||
|
||||
Main.wm.addKeybinding('toggle-overview',
|
||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
||||
Shell.ActionMode.NORMAL |
|
||||
Shell.ActionMode.OVERVIEW,
|
||||
Main.overview.toggle.bind(Main.overview));
|
||||
|
@ -3,6 +3,7 @@
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
@ -34,25 +35,27 @@ var WINDOW_ANIMATION_TIME = 0.25;
|
||||
var DIM_BRIGHTNESS = -0.3;
|
||||
var DIM_TIME = 0.500;
|
||||
var UNDIM_TIME = 0.250;
|
||||
var MOTION_THRESHOLD = 100;
|
||||
|
||||
var ONE_SECOND = 1000; // in ms
|
||||
|
||||
const GSD_WACOM_BUS_NAME = 'org.gnome.SettingsDaemon.Wacom';
|
||||
const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
|
||||
|
||||
const GsdWacomIface = '<node name="/org/gnome/SettingsDaemon/Wacom"> \
|
||||
<interface name="org.gnome.SettingsDaemon.Wacom"> \
|
||||
<method name="SetGroupModeLED"> \
|
||||
<arg name="device_path" direction="in" type="s"/> \
|
||||
<arg name="group" direction="in" type="u"/> \
|
||||
<arg name="mode" direction="in" type="u"/> \
|
||||
</method> \
|
||||
<method name="SetOLEDLabels"> \
|
||||
<arg name="device_path" direction="in" type="s"/> \
|
||||
<arg name="labels" direction="in" type="as"/> \
|
||||
</method> \
|
||||
</interface> \
|
||||
</node>';
|
||||
const GsdWacomIface = `
|
||||
<node name="/org/gnome/SettingsDaemon/Wacom">
|
||||
<interface name="org.gnome.SettingsDaemon.Wacom">
|
||||
<method name="SetGroupModeLED">
|
||||
<arg name="device_path" direction="in" type="s"/>
|
||||
<arg name="group" direction="in" type="u"/>
|
||||
<arg name="mode" direction="in" type="u"/>
|
||||
</method>
|
||||
<method name="SetOLEDLabels">
|
||||
<arg name="device_path" direction="in" type="s"/>
|
||||
<arg name="labels" direction="in" type="as"/>
|
||||
</method>
|
||||
</interface>
|
||||
</node>`;
|
||||
|
||||
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
|
||||
|
||||
@ -213,20 +216,12 @@ var WorkspaceTracker = new Lang.Class({
|
||||
global.display.connect('restacked',
|
||||
this._windowsRestacked.bind(this));
|
||||
|
||||
this._workspaceSettings = this._getWorkspaceSettings();
|
||||
this._workspaceSettings = new Gio.Settings({ schema_id: 'org.gnome.mutter' });
|
||||
this._workspaceSettings.connect('changed::dynamic-workspaces', this._queueCheckWorkspaces.bind(this));
|
||||
|
||||
this._nWorkspacesChanged();
|
||||
},
|
||||
|
||||
_getWorkspaceSettings() {
|
||||
let settings = global.get_overrides_settings();
|
||||
if (settings &&
|
||||
settings.settings_schema.list_keys().indexOf('dynamic-workspaces') > -1)
|
||||
return settings;
|
||||
return new Gio.Settings({ schema_id: 'org.gnome.mutter' });
|
||||
},
|
||||
|
||||
blockUpdates() {
|
||||
this._pauseWorkspaceCheck = true;
|
||||
},
|
||||
@ -495,13 +490,8 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
|
||||
},
|
||||
|
||||
_checkActivated() {
|
||||
const MOTION_THRESHOLD = 50;
|
||||
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
||||
let dir;
|
||||
|
||||
if ((allowedModes & Main.actionMode) == 0)
|
||||
return;
|
||||
|
||||
if (this._dy < -MOTION_THRESHOLD)
|
||||
dir = Meta.MotionDirection.DOWN;
|
||||
else if (this._dy > MOTION_THRESHOLD)
|
||||
@ -511,26 +501,35 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
|
||||
else if (this._dx > MOTION_THRESHOLD)
|
||||
dir = Meta.MotionDirection.LEFT;
|
||||
else
|
||||
return;
|
||||
return false;
|
||||
|
||||
this.emit('activated', dir);
|
||||
return true;
|
||||
},
|
||||
|
||||
_handleEvent(actor, event) {
|
||||
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
||||
|
||||
if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if (event.get_touchpad_gesture_finger_count() != 4)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if ((allowedModes & Main.actionMode) == 0)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
|
||||
let [dx, dy] = event.get_gesture_motion_delta();
|
||||
|
||||
this._dx += dx;
|
||||
this._dy += dy;
|
||||
// Scale deltas up a bit to make it feel snappier
|
||||
this._dx += dx * 2;
|
||||
this._dy += dy * 2;
|
||||
this.emit('motion', this._dx, this._dy);
|
||||
} else {
|
||||
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END)
|
||||
this._checkActivated();
|
||||
if ((event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END && ! this._checkActivated()) ||
|
||||
event.get_gesture_phase() == Clutter.TouchpadGesturePhase.CANCEL)
|
||||
this.emit('cancel');
|
||||
|
||||
this._dx = 0;
|
||||
this._dy = 0;
|
||||
@ -544,14 +543,14 @@ Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype);
|
||||
var WorkspaceSwitchAction = new Lang.Class({
|
||||
Name: 'WorkspaceSwitchAction',
|
||||
Extends: Clutter.SwipeAction,
|
||||
Signals: { 'activated': { param_types: [Meta.MotionDirection.$gtype] } },
|
||||
Signals: { 'activated': { param_types: [Meta.MotionDirection.$gtype] },
|
||||
'motion': { param_types: [GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] },
|
||||
'cancel': { param_types: [] }},
|
||||
|
||||
_init() {
|
||||
const MOTION_THRESHOLD = 50;
|
||||
|
||||
this.parent();
|
||||
this.set_n_touch_points(4);
|
||||
this.set_threshold_trigger_distance(MOTION_THRESHOLD, MOTION_THRESHOLD);
|
||||
this._swept = false;
|
||||
|
||||
global.display.connect('grab-op-begin', () => {
|
||||
this.cancel();
|
||||
@ -561,13 +560,35 @@ var WorkspaceSwitchAction = new Lang.Class({
|
||||
vfunc_gesture_prepare(actor) {
|
||||
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
||||
|
||||
this._swept = false;
|
||||
|
||||
if (!this.parent(actor))
|
||||
return false;
|
||||
|
||||
return (allowedModes & Main.actionMode);
|
||||
},
|
||||
|
||||
vfunc_swept(actor, direction) {
|
||||
vfunc_gesture_progress(actor) {
|
||||
let [x, y] = this.get_motion_coords(0);
|
||||
let [xPress, yPress] = this.get_press_coords(0);
|
||||
this.emit('motion', x - xPress, y - yPress);
|
||||
return true;
|
||||
},
|
||||
|
||||
vfunc_gesture_cancel(actor) {
|
||||
if (!this._swept)
|
||||
this.emit('cancel');
|
||||
},
|
||||
|
||||
vfunc_swipe(actor, direction) {
|
||||
let [x, y] = this.get_motion_coords(0);
|
||||
let [xPress, yPress] = this.get_press_coords(0);
|
||||
if (Math.abs(x - xPress) < MOTION_THRESHOLD &&
|
||||
Math.abs(y - yPress) < MOTION_THRESHOLD) {
|
||||
this.emit('cancel');
|
||||
return;
|
||||
}
|
||||
|
||||
let dir;
|
||||
|
||||
if (direction & Clutter.SwipeDirection.UP)
|
||||
@ -579,6 +600,7 @@ var WorkspaceSwitchAction = new Lang.Class({
|
||||
else if (direction & Clutter.SwipeDirection.RIGHT)
|
||||
dir = Meta.MotionDirection.LEFT;
|
||||
|
||||
this._swept = true;
|
||||
this.emit('activated', dir);
|
||||
}
|
||||
});
|
||||
@ -635,8 +657,8 @@ var AppSwitchAction = new Lang.Class({
|
||||
|
||||
if (this.get_n_current_points() == 3) {
|
||||
for (let i = 0; i < this.get_n_current_points(); i++) {
|
||||
[startX, startY] = this.get_press_coords(i);
|
||||
[x, y] = this.get_motion_coords(i);
|
||||
let [startX, startY] = this.get_press_coords(i);
|
||||
let [x, y] = this.get_motion_coords(i);
|
||||
|
||||
if (Math.abs(x - startX) > MOTION_THRESHOLD ||
|
||||
Math.abs(y - startY) > MOTION_THRESHOLD)
|
||||
@ -700,7 +722,14 @@ var WindowManager = new Lang.Class({
|
||||
this._isWorkspacePrepended = false;
|
||||
|
||||
this._switchData = null;
|
||||
this._shellwm.connect('kill-switch-workspace', this._switchWorkspaceDone.bind(this));
|
||||
this._shellwm.connect('kill-switch-workspace', (shellwm) => {
|
||||
if (this._switchData) {
|
||||
if (this._switchData.inProgress)
|
||||
this._switchWorkspaceDone(shellwm);
|
||||
else if (!this._switchData.gestureActivated)
|
||||
this._finishWorkspaceSwitch(this._switchData);
|
||||
}
|
||||
});
|
||||
this._shellwm.connect('kill-window-effects', (shellwm, actor) => {
|
||||
this._minimizeWindowDone(shellwm, actor);
|
||||
this._mapWindowDone(shellwm, actor);
|
||||
@ -920,14 +949,14 @@ var WindowManager = new Lang.Class({
|
||||
|
||||
this.addKeybinding('open-application-menu',
|
||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
||||
Shell.ActionMode.NORMAL |
|
||||
Shell.ActionMode.POPUP,
|
||||
this._toggleAppMenu.bind(this));
|
||||
|
||||
this.addKeybinding('toggle-message-tray',
|
||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
||||
Shell.ActionMode.NORMAL |
|
||||
Shell.ActionMode.OVERVIEW |
|
||||
Shell.ActionMode.POPUP,
|
||||
@ -982,12 +1011,16 @@ var WindowManager = new Lang.Class({
|
||||
false, -1, 1);
|
||||
|
||||
let gesture = new WorkspaceSwitchAction();
|
||||
gesture.connect('motion', this._switchWorkspaceMotion.bind(this));
|
||||
gesture.connect('activated', this._actionSwitchWorkspace.bind(this));
|
||||
gesture.connect('cancel', this._switchWorkspaceCancel.bind(this));
|
||||
global.stage.add_action(gesture);
|
||||
|
||||
// This is not a normal Clutter.GestureAction, doesn't need add_action()
|
||||
gesture = new TouchpadWorkspaceSwitchAction(global.stage);
|
||||
gesture.connect('motion', this._switchWorkspaceMotion.bind(this));
|
||||
gesture.connect('activated', this._actionSwitchWorkspace.bind(this));
|
||||
gesture.connect('cancel', this._switchWorkspaceCancel.bind(this));
|
||||
|
||||
gesture = new AppSwitchAction();
|
||||
gesture.connect('activated', this._switchApp.bind(this));
|
||||
@ -999,6 +1032,14 @@ var WindowManager = new Lang.Class({
|
||||
Main.keyboard.show(Main.layoutManager.bottomIndex);
|
||||
});
|
||||
global.stage.add_action(gesture);
|
||||
|
||||
gesture = new EdgeDragAction.EdgeDragAction(St.Side.TOP, mode);
|
||||
gesture.connect('activated', () => {
|
||||
let currentWindow = global.display.focus_window;
|
||||
if (currentWindow)
|
||||
currentWindow.unmake_fullscreen();
|
||||
});
|
||||
global.stage.add_action(gesture);
|
||||
},
|
||||
|
||||
_showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) {
|
||||
@ -1008,11 +1049,52 @@ var WindowManager = new Lang.Class({
|
||||
return this._currentPadOsd.actor;
|
||||
},
|
||||
|
||||
_switchWorkspaceMotion(action, xRel, yRel) {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
|
||||
if (!this._switchData)
|
||||
this._prepareWorkspaceSwitch(activeWorkspace.index(), -1);
|
||||
|
||||
if (yRel < 0 && !this._switchData.surroundings[Meta.MotionDirection.DOWN])
|
||||
yRel = 0;
|
||||
if (yRel > 0 && !this._switchData.surroundings[Meta.MotionDirection.UP])
|
||||
yRel = 0;
|
||||
if (xRel < 0 && !this._switchData.surroundings[Meta.MotionDirection.RIGHT])
|
||||
xRel = 0;
|
||||
if (xRel > 0 && !this._switchData.surroundings[Meta.MotionDirection.LEFT])
|
||||
xRel = 0;
|
||||
|
||||
this._switchData.container.set_position(xRel, yRel);
|
||||
},
|
||||
|
||||
_switchWorkspaceCancel() {
|
||||
if (!this._switchData || this._switchData.inProgress)
|
||||
return;
|
||||
let switchData = this._switchData;
|
||||
this._switchData = null;
|
||||
Tweener.addTween(switchData.container,
|
||||
{ x: 0,
|
||||
y: 0,
|
||||
time: WINDOW_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: this._finishWorkspaceSwitch,
|
||||
onCompleteScope: this,
|
||||
onCompleteParams: [switchData],
|
||||
});
|
||||
},
|
||||
|
||||
_actionSwitchWorkspace(action, direction) {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
let newWs = activeWorkspace.get_neighbor(direction);
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
let newWs = activeWorkspace.get_neighbor(direction);
|
||||
|
||||
if (newWs == activeWorkspace) {
|
||||
this._switchWorkspaceCancel();
|
||||
} else {
|
||||
this._switchData.gestureActivated = true;
|
||||
this.actionMoveWorkspace(newWs);
|
||||
}
|
||||
},
|
||||
|
||||
_lookupIndex(windows, metaWindow) {
|
||||
@ -1692,63 +1774,104 @@ var WindowManager = new Lang.Class({
|
||||
if (this._switchData == null)
|
||||
return;
|
||||
|
||||
// Update stacking of windows in inGroup (aka the workspace we are
|
||||
// switching to). Windows in outGroup are about to be hidden anyway,
|
||||
// so we just ignore them here.
|
||||
let windows = global.get_window_actors();
|
||||
let sibling = null;
|
||||
let lastCurSibling = null;
|
||||
let lastDirSibling = [];
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
if (windows[i].get_parent() != this._switchData.inGroup)
|
||||
continue;
|
||||
if (windows[i].get_parent() == this._switchData.curGroup) {
|
||||
this._switchData.curGroup.set_child_above_sibling(windows[i], lastCurSibling);
|
||||
lastCurSibling = windows[i];
|
||||
} else {
|
||||
for (let dir of Object.values(Meta.MotionDirection)) {
|
||||
let info = this._switchData.surroundings[dir];
|
||||
if (!info || windows[i].get_parent() != info.actor)
|
||||
continue;
|
||||
|
||||
this._switchData.inGroup.set_child_above_sibling(windows[i], sibling);
|
||||
sibling = windows[i];
|
||||
let sibling = lastDirSibling[dir];
|
||||
if (sibling == undefined)
|
||||
sibling = null;
|
||||
|
||||
info.actor.set_child_above_sibling(windows[i], sibling);
|
||||
lastDirSibling[dir] = windows[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_switchWorkspace(shellwm, from, to, direction) {
|
||||
if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) {
|
||||
shellwm.completed_switch_workspace();
|
||||
return;
|
||||
}
|
||||
|
||||
let windows = global.get_window_actors();
|
||||
|
||||
/* @direction is the direction that the "camera" moves, so the
|
||||
* screen contents have to move one screen's worth in the
|
||||
* opposite direction.
|
||||
*/
|
||||
_getPositionForDirection(direction) {
|
||||
let xDest = 0, yDest = 0;
|
||||
|
||||
if (direction == Meta.MotionDirection.UP ||
|
||||
direction == Meta.MotionDirection.UP_LEFT ||
|
||||
direction == Meta.MotionDirection.UP_RIGHT)
|
||||
yDest = global.screen_height - Main.panel.actor.height;
|
||||
yDest = -global.screen_height + Main.panel.actor.height;
|
||||
else if (direction == Meta.MotionDirection.DOWN ||
|
||||
direction == Meta.MotionDirection.DOWN_LEFT ||
|
||||
direction == Meta.MotionDirection.DOWN_RIGHT)
|
||||
yDest = -global.screen_height + Main.panel.actor.height;
|
||||
yDest = global.screen_height - Main.panel.actor.height;
|
||||
|
||||
if (direction == Meta.MotionDirection.LEFT ||
|
||||
direction == Meta.MotionDirection.UP_LEFT ||
|
||||
direction == Meta.MotionDirection.DOWN_LEFT)
|
||||
xDest = global.screen_width;
|
||||
xDest = -global.screen_width;
|
||||
else if (direction == Meta.MotionDirection.RIGHT ||
|
||||
direction == Meta.MotionDirection.UP_RIGHT ||
|
||||
direction == Meta.MotionDirection.DOWN_RIGHT)
|
||||
xDest = -global.screen_width;
|
||||
xDest = global.screen_width;
|
||||
|
||||
let switchData = {};
|
||||
this._switchData = switchData;
|
||||
switchData.inGroup = new Clutter.Actor();
|
||||
switchData.outGroup = new Clutter.Actor();
|
||||
switchData.movingWindowBin = new Clutter.Actor();
|
||||
switchData.windows = [];
|
||||
return [xDest, yDest];
|
||||
},
|
||||
|
||||
_prepareWorkspaceSwitch(from, to, direction) {
|
||||
if (this._switchData)
|
||||
return;
|
||||
|
||||
let wgroup = global.window_group;
|
||||
wgroup.add_actor(switchData.inGroup);
|
||||
wgroup.add_actor(switchData.outGroup);
|
||||
let windows = global.get_window_actors();
|
||||
let switchData = {};
|
||||
|
||||
this._switchData = switchData;
|
||||
switchData.curGroup = new Clutter.Actor();
|
||||
switchData.movingWindowBin = new Clutter.Actor();
|
||||
switchData.windows = [];
|
||||
switchData.surroundings = {};
|
||||
switchData.gestureActivated = false;
|
||||
switchData.inProgress = false;
|
||||
|
||||
switchData.container = new Clutter.Actor();
|
||||
switchData.container.add_actor(switchData.curGroup);
|
||||
|
||||
wgroup.add_actor(switchData.movingWindowBin);
|
||||
wgroup.add_actor(switchData.container);
|
||||
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let curWs = workspaceManager.get_workspace_by_index (from);
|
||||
|
||||
for (let dir of Object.values(Meta.MotionDirection)) {
|
||||
let ws = null;
|
||||
|
||||
if (to < 0)
|
||||
ws = curWs.get_neighbor(dir);
|
||||
else if (dir == direction)
|
||||
ws = workspaceManager.get_workspace_by_index(to);
|
||||
|
||||
if (ws == null || ws == curWs) {
|
||||
switchData.surroundings[dir] = null;
|
||||
continue;
|
||||
}
|
||||
|
||||
let info = { index: ws.index(),
|
||||
actor: new Clutter.Actor() };
|
||||
switchData.surroundings[dir] = info;
|
||||
switchData.container.add_actor(info.actor);
|
||||
info.actor.raise_top();
|
||||
|
||||
let [x, y] = this._getPositionForDirection(dir);
|
||||
info.actor.set_position(x, y);
|
||||
}
|
||||
|
||||
switchData.movingWindowBin.raise_top();
|
||||
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
let actor = windows[i];
|
||||
@ -1769,20 +1892,70 @@ var WindowManager = new Lang.Class({
|
||||
actor.reparent(switchData.movingWindowBin);
|
||||
} else if (window.get_workspace().index() == from) {
|
||||
switchData.windows.push(record);
|
||||
actor.reparent(switchData.outGroup);
|
||||
} else if (window.get_workspace().index() == to) {
|
||||
switchData.windows.push(record);
|
||||
actor.reparent(switchData.inGroup);
|
||||
actor.show();
|
||||
actor.reparent(switchData.curGroup);
|
||||
} else {
|
||||
let visible = false;
|
||||
for (let dir of Object.values(Meta.MotionDirection)) {
|
||||
let info = switchData.surroundings[dir];
|
||||
|
||||
if (!info || info.index != window.get_workspace().index())
|
||||
continue;
|
||||
|
||||
switchData.windows.push(record);
|
||||
actor.reparent(info.actor);
|
||||
visible = true;
|
||||
break;
|
||||
}
|
||||
|
||||
actor.visible = visible;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
switchData.inGroup.set_position(-xDest, -yDest);
|
||||
switchData.inGroup.raise_top();
|
||||
_finishWorkspaceSwitch(switchData) {
|
||||
this._switchData = null;
|
||||
|
||||
switchData.movingWindowBin.raise_top();
|
||||
for (let i = 0; i < switchData.windows.length; i++) {
|
||||
let w = switchData.windows[i];
|
||||
if (w.window.is_destroyed()) // Window gone
|
||||
continue;
|
||||
|
||||
Tweener.addTween(switchData.outGroup,
|
||||
w.window.reparent(w.parent);
|
||||
|
||||
if (w.window.get_meta_window().get_workspace() !=
|
||||
global.workspace_manager.get_active_workspace())
|
||||
w.window.hide();
|
||||
}
|
||||
Tweener.removeTweens(switchData.container);
|
||||
switchData.container.destroy();
|
||||
switchData.movingWindowBin.destroy();
|
||||
|
||||
this._movingWindow = null;
|
||||
},
|
||||
|
||||
_switchWorkspace(shellwm, from, to, direction) {
|
||||
if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) {
|
||||
shellwm.completed_switch_workspace();
|
||||
return;
|
||||
}
|
||||
|
||||
// If we come from a gesture, switchData will already be set,
|
||||
// and we don't want to overwrite it.
|
||||
if (!this._switchData)
|
||||
this._prepareWorkspaceSwitch(from, to, direction);
|
||||
|
||||
this._switchData.inProgress = true;
|
||||
|
||||
let [xDest, yDest] = this._getPositionForDirection(direction);
|
||||
|
||||
/* @direction is the direction that the "camera" moves, so the
|
||||
* screen contents have to move one screen's worth in the
|
||||
* opposite direction.
|
||||
*/
|
||||
xDest = -xDest;
|
||||
yDest = -yDest;
|
||||
|
||||
Tweener.addTween(this._switchData.container,
|
||||
{ x: xDest,
|
||||
y: yDest,
|
||||
time: WINDOW_ANIMATION_TIME,
|
||||
@ -1791,39 +1964,10 @@ var WindowManager = new Lang.Class({
|
||||
onCompleteScope: this,
|
||||
onCompleteParams: [shellwm]
|
||||
});
|
||||
Tweener.addTween(switchData.inGroup,
|
||||
{ x: 0,
|
||||
y: 0,
|
||||
time: WINDOW_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
},
|
||||
|
||||
_switchWorkspaceDone(shellwm) {
|
||||
let switchData = this._switchData;
|
||||
if (!switchData)
|
||||
return;
|
||||
this._switchData = null;
|
||||
|
||||
for (let i = 0; i < switchData.windows.length; i++) {
|
||||
let w = switchData.windows[i];
|
||||
if (w.window.is_destroyed()) // Window gone
|
||||
continue;
|
||||
if (w.window.get_parent() == switchData.outGroup) {
|
||||
w.window.reparent(w.parent);
|
||||
w.window.hide();
|
||||
} else
|
||||
w.window.reparent(w.parent);
|
||||
}
|
||||
Tweener.removeTweens(switchData.inGroup);
|
||||
Tweener.removeTweens(switchData.outGroup);
|
||||
switchData.inGroup.destroy();
|
||||
switchData.outGroup.destroy();
|
||||
switchData.movingWindowBin.destroy();
|
||||
|
||||
if (this._movingWindow)
|
||||
this._movingWindow = null;
|
||||
|
||||
this._finishWorkspaceSwitch(this._switchData);
|
||||
shellwm.completed_switch_workspace();
|
||||
},
|
||||
|
||||
|
@ -137,8 +137,10 @@ var WindowClone = new Lang.Class({
|
||||
this._dragSlot = [0, 0, 0, 0];
|
||||
this._stackAbove = null;
|
||||
|
||||
this._windowClone._updateId = this.metaWindow.connect('size-changed',
|
||||
this._onRealWindowSizeChanged.bind(this));
|
||||
this._windowClone._sizeChangedId = this.metaWindow.connect('size-changed',
|
||||
this._onMetaWindowSizeChanged.bind(this));
|
||||
this._windowClone._posChangedId = this.metaWindow.connect('position-changed',
|
||||
this._computeBoundingBox.bind(this));
|
||||
this._windowClone._destroyId =
|
||||
this.realWindow.connect('destroy', () => {
|
||||
// First destroy the clone and then destroy everything
|
||||
@ -177,6 +179,7 @@ var WindowClone = new Lang.Class({
|
||||
this.inDrag = false;
|
||||
|
||||
this._selected = false;
|
||||
this._closeRequested = false;
|
||||
},
|
||||
|
||||
set slot(slot) {
|
||||
@ -192,7 +195,6 @@ var WindowClone = new Lang.Class({
|
||||
|
||||
deleteAll() {
|
||||
// Delete all windows, starting from the bottom-most (most-modal) one
|
||||
|
||||
let windows = this.actor.get_children();
|
||||
for (let i = windows.length - 1; i >= 1; i--) {
|
||||
let realWindow = windows[i].source;
|
||||
@ -202,12 +204,24 @@ var WindowClone = new Lang.Class({
|
||||
}
|
||||
|
||||
this.metaWindow.delete(global.get_current_time());
|
||||
this._closeRequested = true;
|
||||
},
|
||||
|
||||
addAttachedDialog(win) {
|
||||
this._doAddAttachedDialog(win, win.get_compositor_private());
|
||||
this._computeBoundingBox();
|
||||
this.emit('size-changed');
|
||||
addDialog(win) {
|
||||
let parent = win.get_transient_for();
|
||||
while (parent.is_attached_dialog())
|
||||
parent = parent.get_transient_for();
|
||||
|
||||
// Display dialog if it is attached to our metaWindow
|
||||
if (win.is_attached_dialog() && parent == this.metaWindow) {
|
||||
this._doAddAttachedDialog(win, win.get_compositor_private());
|
||||
this._onMetaWindowSizeChanged();
|
||||
}
|
||||
|
||||
// The dialog popped up after the user tried to close the window,
|
||||
// assume it's a close confirmation and leave the overview
|
||||
if (this._closeRequested)
|
||||
this._activate();
|
||||
},
|
||||
|
||||
hasAttachedDialogs() {
|
||||
@ -216,15 +230,14 @@ var WindowClone = new Lang.Class({
|
||||
|
||||
_doAddAttachedDialog(metaWin, realWin) {
|
||||
let clone = new Clutter.Clone({ source: realWin });
|
||||
clone._updateId = metaWin.connect('size-changed', () => {
|
||||
this._computeBoundingBox();
|
||||
this.emit('size-changed');
|
||||
});
|
||||
clone._sizeChangedId = metaWin.connect('size-changed',
|
||||
this._onMetaWindowSizeChanged.bind(this));
|
||||
clone._posChangedId = metaWin.connect('position-changed',
|
||||
this._onMetaWindowSizeChanged.bind(this));
|
||||
clone._destroyId = realWin.connect('destroy', () => {
|
||||
clone.destroy();
|
||||
|
||||
this._computeBoundingBox();
|
||||
this.emit('size-changed');
|
||||
this._onMetaWindowSizeChanged();
|
||||
});
|
||||
this.actor.add_child(clone);
|
||||
},
|
||||
@ -321,12 +334,13 @@ var WindowClone = new Lang.Class({
|
||||
else
|
||||
realWindow = child.source;
|
||||
|
||||
realWindow.meta_window.disconnect(child._updateId);
|
||||
realWindow.meta_window.disconnect(child._sizeChangedId);
|
||||
realWindow.meta_window.disconnect(child._posChangedId);
|
||||
realWindow.disconnect(child._destroyId);
|
||||
});
|
||||
},
|
||||
|
||||
_onRealWindowSizeChanged() {
|
||||
_onMetaWindowSizeChanged() {
|
||||
this._computeBoundingBox();
|
||||
this.emit('size-changed');
|
||||
},
|
||||
@ -461,14 +475,12 @@ var WindowOverlay = new Lang.Class({
|
||||
button._overlap = 0;
|
||||
|
||||
this._idleToggleCloseId = 0;
|
||||
button.connect('clicked', this._closeWindow.bind(this));
|
||||
button.connect('clicked', () => this._windowClone.deleteAll());
|
||||
|
||||
windowClone.actor.connect('destroy', this._onDestroy.bind(this));
|
||||
windowClone.connect('show-chrome', this._onShowChrome.bind(this));
|
||||
windowClone.connect('hide-chrome', this._onHideChrome.bind(this));
|
||||
|
||||
this._windowAddedId = 0;
|
||||
|
||||
button.hide();
|
||||
title.hide();
|
||||
|
||||
@ -589,43 +601,12 @@ var WindowOverlay = new Lang.Class({
|
||||
Tweener.addTween(actor, params);
|
||||
},
|
||||
|
||||
_closeWindow(actor) {
|
||||
let metaWindow = this._windowClone.metaWindow;
|
||||
this._workspace = metaWindow.get_workspace();
|
||||
|
||||
this._windowAddedId = this._workspace.connect('window-added',
|
||||
this._onWindowAdded.bind(this));
|
||||
|
||||
this._windowClone.deleteAll();
|
||||
},
|
||||
|
||||
_windowCanClose() {
|
||||
return this._windowClone.metaWindow.can_close() &&
|
||||
!this._windowClone.hasAttachedDialogs();
|
||||
},
|
||||
|
||||
_onWindowAdded(workspace, win) {
|
||||
let metaWindow = this._windowClone.metaWindow;
|
||||
|
||||
if (win.get_transient_for() == metaWindow) {
|
||||
workspace.disconnect(this._windowAddedId);
|
||||
this._windowAddedId = 0;
|
||||
|
||||
// use an idle handler to avoid mapping problems -
|
||||
// see comment in Workspace._windowAdded
|
||||
let id = Mainloop.idle_add(() => {
|
||||
this._windowClone.emit('selected');
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._windowClone.emit');
|
||||
}
|
||||
},
|
||||
|
||||
_onDestroy() {
|
||||
if (this._windowAddedId > 0) {
|
||||
this._workspace.disconnect(this._windowAddedId);
|
||||
this._windowAddedId = 0;
|
||||
}
|
||||
if (this._idleToggleCloseId > 0) {
|
||||
Mainloop.source_remove(this._idleToggleCloseId);
|
||||
this._idleToggleCloseId = 0;
|
||||
@ -1515,21 +1496,17 @@ var Workspace = new Lang.Class({
|
||||
return;
|
||||
|
||||
if (!this._isOverviewWindow(win)) {
|
||||
if (metaWin.is_attached_dialog()) {
|
||||
let parent = metaWin.get_transient_for();
|
||||
while (parent.is_attached_dialog())
|
||||
parent = metaWin.get_transient_for();
|
||||
if (metaWin.get_transient_for() == null)
|
||||
return;
|
||||
|
||||
let idx = this._lookupIndex (parent);
|
||||
if (idx < 0) {
|
||||
// parent was not created yet, it will take care
|
||||
// of the dialog when created
|
||||
return;
|
||||
}
|
||||
// Let the top-most ancestor handle all transients
|
||||
let parent = metaWin.find_root_ancestor();
|
||||
let clone = this._windows.find(c => c.metaWindow == parent);
|
||||
|
||||
let clone = this._windows[idx];
|
||||
clone.addAttachedDialog(metaWin);
|
||||
}
|
||||
// If no clone was found, the parent hasn't been created yet
|
||||
// and will take care of the dialog when added
|
||||
if (clone)
|
||||
clone.addDialog(metaWin);
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ var WindowClone = new Lang.Class({
|
||||
this.realWindow = realWindow;
|
||||
this.metaWindow = realWindow.meta_window;
|
||||
|
||||
this.clone._updateId = this.metaWindow.connect('position-changed',
|
||||
this.clone._updateId = this.realWindow.connect('notify::position',
|
||||
this._onPositionChanged.bind(this));
|
||||
this.clone._destroyId = this.realWindow.connect('destroy', () => {
|
||||
// First destroy the clone and then destroy everything
|
||||
@ -153,7 +153,7 @@ var WindowClone = new Lang.Class({
|
||||
let clone = new Clutter.Clone({ source: realDialog });
|
||||
this._updateDialogPosition(realDialog, clone);
|
||||
|
||||
clone._updateId = metaDialog.connect('position-changed', dialog => {
|
||||
clone._updateId = realDialog.connect('notify::position', dialog => {
|
||||
this._updateDialogPosition(dialog, clone);
|
||||
});
|
||||
clone._destroyId = realDialog.connect('destroy', () => {
|
||||
@ -171,7 +171,6 @@ var WindowClone = new Lang.Class({
|
||||
},
|
||||
|
||||
_onPositionChanged() {
|
||||
let rect = this.metaWindow.get_frame_rect();
|
||||
this.actor.set_position(this.realWindow.x, this.realWindow.y);
|
||||
},
|
||||
|
||||
@ -179,7 +178,7 @@ var WindowClone = new Lang.Class({
|
||||
this.actor.get_children().forEach(child => {
|
||||
let realWindow = child.source;
|
||||
|
||||
realWindow.meta_window.disconnect(child._updateId);
|
||||
realWindow.disconnect(child._updateId);
|
||||
realWindow.disconnect(child._destroyId);
|
||||
});
|
||||
},
|
||||
@ -417,7 +416,7 @@ var WorkspaceThumbnail = new Lang.Class({
|
||||
} else if (metaWin.is_attached_dialog()) {
|
||||
let parent = metaWin.get_transient_for();
|
||||
while (parent.is_attached_dialog())
|
||||
parent = metaWin.get_transient_for();
|
||||
parent = parent.get_transient_for();
|
||||
|
||||
let idx = this._lookupIndex (parent);
|
||||
if (idx < 0) {
|
||||
@ -679,7 +678,11 @@ var ThumbnailsBox = new Lang.Class({
|
||||
this._settings.connect('changed::dynamic-workspaces',
|
||||
this._updateSwitcherVisibility.bind(this));
|
||||
|
||||
Main.layoutManager.connect('monitors-changed', this._rebuildThumbnails.bind(this));
|
||||
Main.layoutManager.connect('monitors-changed', () => {
|
||||
this._destroyThumbnails();
|
||||
if (Main.overview.visible)
|
||||
this._createThumbnails();
|
||||
});
|
||||
|
||||
this._switchWorkspaceNotifyId = 0;
|
||||
this._nWorkspacesNotifyId = 0;
|
||||
@ -882,10 +885,6 @@ var ThumbnailsBox = new Lang.Class({
|
||||
Main.overview.connect('windows-restacked',
|
||||
this._syncStacking.bind(this));
|
||||
|
||||
this._workareasChangedId =
|
||||
global.display.connect('workareas-changed',
|
||||
this._rebuildThumbnails.bind(this));
|
||||
|
||||
this._targetScale = 0;
|
||||
this._scale = 0;
|
||||
this._pendingScaleUpdate = false;
|
||||
@ -919,24 +918,12 @@ var ThumbnailsBox = new Lang.Class({
|
||||
this._syncStackingId = 0;
|
||||
}
|
||||
|
||||
if (this._workareasChangedId > 0) {
|
||||
global.display.disconnect(this._workareasChangedId);
|
||||
this._workareasChangedId = 0;
|
||||
}
|
||||
|
||||
for (let w = 0; w < this._thumbnails.length; w++)
|
||||
this._thumbnails[w].destroy();
|
||||
this._thumbnails = [];
|
||||
this._porthole = null;
|
||||
},
|
||||
|
||||
_rebuildThumbnails() {
|
||||
this._destroyThumbnails();
|
||||
|
||||
if (Main.overview.visible)
|
||||
this._createThumbnails();
|
||||
},
|
||||
|
||||
_workspacesChanged() {
|
||||
let validThumbnails =
|
||||
this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL);
|
||||
|
22
meson.build
22
meson.build
@ -1,6 +1,6 @@
|
||||
project('gnome-shell', 'c',
|
||||
version: '3.29.4',
|
||||
meson_version: '>= 0.42.0',
|
||||
version: '3.30.0',
|
||||
meson_version: '>= 0.47.0',
|
||||
license: 'GPLv2+'
|
||||
)
|
||||
|
||||
@ -23,9 +23,9 @@ gi_req = '>= 1.49.1'
|
||||
gjs_req = '>= 1.47.0'
|
||||
gtk_req = '>= 3.15.0'
|
||||
json_glib_req = '>= 0.13.2'
|
||||
mutter_req = '>= 3.29.4'
|
||||
mutter_req = '>= 3.30.0'
|
||||
polkit_req = '>= 0.100'
|
||||
schemas_req = '>= 3.21.3'
|
||||
schemas_req = '>= 3.27.90'
|
||||
startup_req = '>= 0.11'
|
||||
ibus_req = '>= 1.5.2'
|
||||
|
||||
@ -44,10 +44,12 @@ datadir = join_paths(prefix, get_option('datadir'))
|
||||
libdir = join_paths(prefix, get_option('libdir'))
|
||||
libexecdir = join_paths(prefix, get_option('libexecdir'))
|
||||
mandir = join_paths(prefix, get_option('mandir'))
|
||||
sysconfdir = join_paths(prefix, get_option('sysconfdir'))
|
||||
|
||||
pkgdatadir = join_paths(datadir, meson.project_name())
|
||||
pkglibdir = join_paths(libdir, meson.project_name())
|
||||
|
||||
autostartdir = join_paths(sysconfdir, 'xdg', 'autostart')
|
||||
convertdir = join_paths(datadir, 'GConf', 'gsettings')
|
||||
desktopdir = join_paths(datadir, 'applications')
|
||||
ifacedir = join_paths(datadir, 'dbus-1', 'interfaces')
|
||||
@ -64,7 +66,7 @@ plugindir = get_variable('BROWSER_PLUGIN_DIR', mozplugindir)
|
||||
# systemduserunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
|
||||
# define_variable: ['prefix', prefix])
|
||||
# and uncomment systemd_dep below
|
||||
systemduserunitdir = join_paths(libdir, 'systemd', 'user')
|
||||
systemduserunitdir = join_paths(prefix, 'lib', 'systemd', 'user')
|
||||
|
||||
keybindings_dep = dependency('gnome-keybindings', required: false)
|
||||
if keybindings_dep.found()
|
||||
@ -161,6 +163,11 @@ cdata.set_quoted('PACKAGE_VERSION', meson.project_version())
|
||||
cdata.set('HAVE_NETWORKMANAGER', have_networkmanager)
|
||||
cdata.set('HAVE_SYSTEMD', have_systemd)
|
||||
|
||||
# New API added in glib-2.57.2
|
||||
cdata.set('HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS',
|
||||
cc.has_function('g_desktop_app_info_launch_uris_as_manager_with_fds',
|
||||
dependencies : gio_dep)
|
||||
)
|
||||
cdata.set('HAVE_FDWALK', cc.has_function('fdwalk'))
|
||||
cdata.set('HAVE_MALLINFO', cc.has_function('mallinfo'))
|
||||
cdata.set('HAVE_SYS_RESOURCE_H', cc.has_header('sys/resource.h'))
|
||||
@ -168,6 +175,10 @@ cdata.set('HAVE__NL_TIME_FIRST_WEEKDAY',
|
||||
cc.has_header_symbol('langinfo.h', '_NL_TIME_FIRST_WEEKDAY')
|
||||
)
|
||||
|
||||
cdata.set('HAVE_FDWALK',
|
||||
cc.has_function('fdwalk')
|
||||
)
|
||||
|
||||
config_h = configure_file(
|
||||
input: 'config.h.meson',
|
||||
output: 'config.h',
|
||||
@ -194,6 +205,7 @@ subdir('src')
|
||||
subdir('po')
|
||||
subdir('data')
|
||||
subdir('tests')
|
||||
subdir('tools')
|
||||
|
||||
if get_option('gtk_doc')
|
||||
subdir('docs/reference')
|
||||
|
@ -40,6 +40,7 @@ js/ui/messageList.js
|
||||
js/ui/messageTray.js
|
||||
js/ui/mpris.js
|
||||
js/ui/notificationDaemon.js
|
||||
js/ui/osdWindow.js
|
||||
js/ui/overviewControls.js
|
||||
js/ui/overview.js
|
||||
js/ui/padOsd.js
|
||||
@ -58,6 +59,7 @@ js/ui/status/location.js
|
||||
js/ui/status/network.js
|
||||
js/ui/status/nightLight.js
|
||||
js/ui/status/power.js
|
||||
js/ui/status/remoteAccess.js
|
||||
js/ui/status/rfkill.js
|
||||
js/ui/status/system.js
|
||||
js/ui/status/thunderbolt.js
|
||||
|
230
po/ca.po
230
po/ca.po
@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: HEAD\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2018-04-13 19:54+0000\n"
|
||||
"POT-Creation-Date: 2018-08-01 18:08+0000\n"
|
||||
"PO-Revision-Date: 2018-03-10 21:24+0100\n"
|
||||
"Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
|
||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||
@ -299,36 +299,36 @@ msgstr ""
|
||||
"Si és «true» (cert), només les finestres de l'espai de treball actual es "
|
||||
"mostren en el canviador. En cas contrari, es mostren totes les finestres."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:197
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Adjunta el diàleg modal a la finestra pare"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:208
|
||||
#: data/org.gnome.shell.gschema.xml.in:216
|
||||
#: data/org.gnome.shell.gschema.xml.in:224
|
||||
#: data/org.gnome.shell.gschema.xml.in:232
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome."
|
||||
"mutter»."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:206
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Habilita el mòsaic a les vores en deixar anar les finestres a les vores de "
|
||||
"la pantalla"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:214
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Els espais de treball es gestionen dinàmicament"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:222
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Només en el monitor principal hi ha espais de treball"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:230
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retarda el canvi del focus, quan s'està en mode ratolí, fins que el punter "
|
||||
@ -369,20 +369,20 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Entra"
|
||||
|
||||
#: js/gdm/loginDialog.js:315
|
||||
#: js/gdm/loginDialog.js:319
|
||||
msgid "Choose Session"
|
||||
msgstr "Trieu la sessió"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: js/gdm/loginDialog.js:458
|
||||
#: js/gdm/loginDialog.js:462
|
||||
msgid "Not listed?"
|
||||
msgstr "No esteu llistat?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:887
|
||||
#: js/gdm/loginDialog.js:891
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(p. ex. l'usuari o %s)"
|
||||
@ -390,12 +390,12 @@ msgstr "(p. ex. l'usuari o %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243
|
||||
#: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
|
||||
#: js/ui/components/networkAgent.js:261
|
||||
msgid "Username: "
|
||||
msgstr "Nom d'usuari:"
|
||||
|
||||
#: js/gdm/loginDialog.js:1228
|
||||
#: js/gdm/loginDialog.js:1234
|
||||
msgid "Login Window"
|
||||
msgstr "Finestra d'entrada"
|
||||
|
||||
@ -408,7 +408,7 @@ msgstr "Error d'autenticació"
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: js/gdm/util.js:482
|
||||
#: js/gdm/util.js:485
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(o passeu el dit)"
|
||||
|
||||
@ -649,23 +649,23 @@ msgstr "Freqüent"
|
||||
msgid "All"
|
||||
msgstr "Totes"
|
||||
|
||||
#: js/ui/appDisplay.js:1886
|
||||
#: js/ui/appDisplay.js:1890
|
||||
msgid "New Window"
|
||||
msgstr "Finestra nova"
|
||||
|
||||
#: js/ui/appDisplay.js:1900
|
||||
#: js/ui/appDisplay.js:1904
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Inicia usant una targeta gràfica dedicada"
|
||||
|
||||
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285
|
||||
#: js/ui/appDisplay.js:1931 js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Suprimeix dels preferits"
|
||||
|
||||
#: js/ui/appDisplay.js:1933
|
||||
#: js/ui/appDisplay.js:1937
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Afegeix als preferits"
|
||||
|
||||
#: js/ui/appDisplay.js:1943
|
||||
#: js/ui/appDisplay.js:1947
|
||||
msgid "Show Details"
|
||||
msgstr "Mostra els detalls"
|
||||
|
||||
@ -695,7 +695,7 @@ msgstr "Auriculars"
|
||||
msgid "Headset"
|
||||
msgstr "Auriculars amb micròfon"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
|
||||
msgid "Microphone"
|
||||
msgstr "Micròfon"
|
||||
|
||||
@ -707,7 +707,7 @@ msgstr "Canvia el fons de l'escriptori…"
|
||||
msgid "Display Settings"
|
||||
msgstr "Paràmetres de la pantalla"
|
||||
|
||||
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264
|
||||
#: js/ui/backgroundMenu.js:22
|
||||
msgid "Settings"
|
||||
msgstr "Paràmetres"
|
||||
|
||||
@ -812,35 +812,35 @@ msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Tot el dia"
|
||||
|
||||
#: js/ui/calendar.js:864
|
||||
#: js/ui/calendar.js:866
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A %-d %B"
|
||||
|
||||
#: js/ui/calendar.js:868
|
||||
#: js/ui/calendar.js:870
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A %d %B de %Y"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "Cap notificació"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "Cap cita"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1131
|
||||
msgid "Clear All"
|
||||
msgstr "Neteja-ho tot"
|
||||
|
||||
#. Translators: %s is an application name
|
||||
#: js/ui/closeDialog.js:44
|
||||
#: js/ui/closeDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "«%s» no està responent."
|
||||
|
||||
#: js/ui/closeDialog.js:45
|
||||
#: js/ui/closeDialog.js:48
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -848,11 +848,11 @@ msgstr ""
|
||||
"Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida "
|
||||
"completa."
|
||||
|
||||
#: js/ui/closeDialog.js:61
|
||||
#: js/ui/closeDialog.js:64
|
||||
msgid "Force Quit"
|
||||
msgstr "Força la sortida"
|
||||
|
||||
#: js/ui/closeDialog.js:64
|
||||
#: js/ui/closeDialog.js:67
|
||||
msgid "Wait"
|
||||
msgstr "Espera"
|
||||
|
||||
@ -869,7 +869,7 @@ msgstr "S'ha desconnectat un dispositiu extern"
|
||||
msgid "Open with %s"
|
||||
msgstr "Obre amb %s"
|
||||
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
|
||||
msgid "Password:"
|
||||
msgstr "Contrasenya:"
|
||||
|
||||
@ -906,11 +906,11 @@ msgstr "Contrasenya de la clau privada:"
|
||||
msgid "Service: "
|
||||
msgstr "Servei:"
|
||||
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "La xarxa sense fil requereix autenticació"
|
||||
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -919,7 +919,7 @@ msgstr ""
|
||||
"Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus "
|
||||
"d'encriptació."
|
||||
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Autenticació 802.1X amb fil"
|
||||
|
||||
@ -927,15 +927,15 @@ msgstr "Autenticació 802.1X amb fil"
|
||||
msgid "Network name: "
|
||||
msgstr "Nom de la xarxa: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
|
||||
msgid "DSL authentication"
|
||||
msgstr "Autenticació DSL"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
|
||||
msgid "PIN code required"
|
||||
msgstr "Cal que introduïu el codi PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil"
|
||||
|
||||
@ -943,17 +943,17 @@ msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil"
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Contrasenya de la xarxa de banda ampla mòbil"
|
||||
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
|
||||
#: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Cal introduir una contrasenya per connectar-vos a «%s»."
|
||||
|
||||
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
|
||||
msgid "Network Manager"
|
||||
msgstr "Gestor de connexions de xarxa"
|
||||
|
||||
@ -973,7 +973,7 @@ msgstr "Autentica"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
|
||||
#: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
|
||||
msgid "Sorry, that didn’t work. Please try again."
|
||||
msgstr "No ha funcionat. Torneu-ho a provar."
|
||||
|
||||
@ -1308,13 +1308,13 @@ msgid "Leave On"
|
||||
msgstr "Deixa-ho actiu"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1294
|
||||
msgid "Turn On"
|
||||
msgstr "Activa"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:154 js/ui/status/network.js:337
|
||||
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1294 js/ui/status/network.js:1409
|
||||
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
|
||||
#: js/ui/status/rfkill.js:117
|
||||
msgid "Turn Off"
|
||||
@ -1376,7 +1376,7 @@ msgstr "Mostra el codi font"
|
||||
msgid "Web Page"
|
||||
msgstr "Pàgina web"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1495
|
||||
msgid "System Information"
|
||||
msgstr "Informació de l'ordinador"
|
||||
|
||||
@ -1388,6 +1388,10 @@ msgstr "Artista desconegut"
|
||||
msgid "Unknown title"
|
||||
msgstr "Títol desconegut"
|
||||
|
||||
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
|
||||
msgid "Volume"
|
||||
msgstr "Volum"
|
||||
|
||||
#: js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "Desfés"
|
||||
@ -1430,42 +1434,42 @@ msgstr "Assigna la pulsació de tecla"
|
||||
msgid "Done"
|
||||
msgstr "Fet"
|
||||
|
||||
#: js/ui/padOsd.js:740
|
||||
#: js/ui/padOsd.js:742
|
||||
msgid "Edit…"
|
||||
msgstr "Edita…"
|
||||
|
||||
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887
|
||||
#: js/ui/padOsd.js:784 js/ui/padOsd.js:889
|
||||
msgid "None"
|
||||
msgstr "Cap"
|
||||
|
||||
#: js/ui/padOsd.js:841
|
||||
#: js/ui/padOsd.js:843
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Premeu un botó per a configurar"
|
||||
|
||||
#: js/ui/padOsd.js:842
|
||||
#: js/ui/padOsd.js:844
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Premeu Esc per sortir"
|
||||
|
||||
#: js/ui/padOsd.js:845
|
||||
#: js/ui/padOsd.js:847
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Premeu qualsevol tecla per sortir"
|
||||
|
||||
#: js/ui/panel.js:355
|
||||
#: js/ui/panel.js:356
|
||||
msgid "Quit"
|
||||
msgstr "Surt"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:411
|
||||
#: js/ui/panel.js:412
|
||||
msgid "Activities"
|
||||
msgstr "Activitats"
|
||||
|
||||
#: js/ui/panel.js:692
|
||||
#: js/ui/panel.js:693
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: js/ui/panel.js:811
|
||||
#: js/ui/panel.js:816
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
@ -1474,23 +1478,23 @@ msgstr "Barra superior"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:291
|
||||
#: js/ui/popupMenu.js:300
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:70
|
||||
#: js/ui/runDialog.js:74
|
||||
msgid "Enter a Command"
|
||||
msgstr "Introduïu una ordre"
|
||||
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175
|
||||
#: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
|
||||
msgid "Close"
|
||||
msgstr "Tanca"
|
||||
|
||||
#: js/ui/runDialog.js:273
|
||||
#: js/ui/runDialog.js:278
|
||||
msgid "Restart is not available on Wayland"
|
||||
msgstr "El reinici no està disponible en Wayland"
|
||||
|
||||
#: js/ui/runDialog.js:278
|
||||
#: js/ui/runDialog.js:283
|
||||
msgid "Restarting…"
|
||||
msgstr "S'està reiniciant…"
|
||||
|
||||
@ -1514,7 +1518,7 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d notificació nova"
|
||||
msgstr[1] "%d notificacions noves"
|
||||
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:283
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:294
|
||||
msgid "Lock"
|
||||
msgstr "Bloqueja"
|
||||
|
||||
@ -1697,7 +1701,7 @@ msgid "<unknown>"
|
||||
msgstr "<desconegut>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1310
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1323
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s apagat"
|
||||
@ -1724,7 +1728,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "%s s'està desconnectant"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1302
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1315
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "%s s'està connectant"
|
||||
@ -1764,7 +1768,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "Configuració de la xarxa de banda ampla mòbil"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1307
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1320
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "%s maquinari inhabilitat"
|
||||
@ -1820,81 +1824,81 @@ msgstr "Cap xarxa"
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Utilitza l'interruptor de maquinari per desactivar-la"
|
||||
|
||||
#: js/ui/status/network.js:1173
|
||||
#: js/ui/status/network.js:1186
|
||||
msgid "Select Network"
|
||||
msgstr "Trieu una xarxa"
|
||||
|
||||
#: js/ui/status/network.js:1179
|
||||
#: js/ui/status/network.js:1192
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Paràmetres de la xarxa sense fil"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1298
|
||||
#: js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "Hostpot %s actiu"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1313
|
||||
#: js/ui/status/network.js:1326
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s no està connectat"
|
||||
|
||||
#: js/ui/status/network.js:1413
|
||||
#: js/ui/status/network.js:1426
|
||||
msgid "connecting…"
|
||||
msgstr "s'està connectant..."
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1416
|
||||
#: js/ui/status/network.js:1429
|
||||
msgid "authentication required"
|
||||
msgstr "cal autenticació"
|
||||
|
||||
#: js/ui/status/network.js:1418
|
||||
#: js/ui/status/network.js:1431
|
||||
msgid "connection failed"
|
||||
msgstr "ha fallat la connexió"
|
||||
|
||||
#: js/ui/status/network.js:1472
|
||||
#: js/ui/status/network.js:1485
|
||||
msgid "VPN Settings"
|
||||
msgstr "Paràmetres de la VPN"
|
||||
|
||||
#: js/ui/status/network.js:1485
|
||||
#: js/ui/status/network.js:1498
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: js/ui/status/network.js:1495
|
||||
#: js/ui/status/network.js:1508
|
||||
msgid "VPN Off"
|
||||
msgstr "VPN apagada"
|
||||
|
||||
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93
|
||||
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
|
||||
msgid "Network Settings"
|
||||
msgstr "Paràmetres de xarxa"
|
||||
|
||||
#: js/ui/status/network.js:1588
|
||||
#: js/ui/status/network.js:1601
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "%s connexió amb fil"
|
||||
msgstr[1] "%s connexions amb fil"
|
||||
|
||||
#: js/ui/status/network.js:1592
|
||||
#: js/ui/status/network.js:1605
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "%s connexió Wifi"
|
||||
msgstr[1] "%s connexions Wifi"
|
||||
|
||||
#: js/ui/status/network.js:1596
|
||||
#: js/ui/status/network.js:1609
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s connexió mòdem"
|
||||
msgstr[1] "%s connexions mòdem"
|
||||
|
||||
#: js/ui/status/network.js:1728
|
||||
#: js/ui/status/network.js:1741
|
||||
msgid "Connection failed"
|
||||
msgstr "Ha fallat la connexió"
|
||||
|
||||
#: js/ui/status/network.js:1729
|
||||
#: js/ui/status/network.js:1742
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Ha fallat l'activació de la connexió de xarxa"
|
||||
|
||||
@ -1945,6 +1949,14 @@ msgstr "%d∶%02d per completar la càrrega (%d %%)"
|
||||
msgid "%d %%"
|
||||
msgstr "%d %%"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:46
|
||||
msgid "Screen is Being Shared"
|
||||
msgstr "Es comparteix la pantalla"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:48
|
||||
msgid "Turn off"
|
||||
msgstr "Desactiva"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
@ -1964,28 +1976,28 @@ msgstr "Surt"
|
||||
msgid "Account Settings"
|
||||
msgstr "Paràmetres del compte"
|
||||
|
||||
#: js/ui/status/system.js:268
|
||||
#: js/ui/status/system.js:279
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Bloqueja l'orientació"
|
||||
|
||||
#: js/ui/status/system.js:294
|
||||
#: js/ui/status/system.js:305
|
||||
msgid "Suspend"
|
||||
msgstr "Atura temporalment"
|
||||
|
||||
#: js/ui/status/system.js:304
|
||||
#: js/ui/status/system.js:315
|
||||
msgid "Power Off"
|
||||
msgstr "Apaga"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:294
|
||||
#: js/ui/status/thunderbolt.js:298
|
||||
msgid "Thunderbolt"
|
||||
msgstr "Thunderbolt"
|
||||
|
||||
#. we are done
|
||||
#: js/ui/status/thunderbolt.js:350
|
||||
#: js/ui/status/thunderbolt.js:354
|
||||
msgid "Unknown Thunderbolt device"
|
||||
msgstr "Dispostiu Thunderbolt desconegut"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:351
|
||||
#: js/ui/status/thunderbolt.js:355
|
||||
msgid ""
|
||||
"New device has been detected while you were away. Please disconnect and "
|
||||
"reconnect the device to start using it."
|
||||
@ -1993,23 +2005,19 @@ msgstr ""
|
||||
"El nou dispositiu s'ha detectat mentre estàveu absents. Desconnecteu i "
|
||||
"torneu a connectar el dispositiu per a començar a utilitzar-lo."
|
||||
|
||||
#: js/ui/status/thunderbolt.js:356
|
||||
#: js/ui/status/thunderbolt.js:360
|
||||
msgid "Thunderbolt authorization error"
|
||||
msgstr "S'ha produït un error d'autorització a Thunderbolt"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:357
|
||||
#, javascript-format
|
||||
#: js/ui/status/thunderbolt.js:361
|
||||
#, javascript-format
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "No s'ha pogut autoritzar el dispositiu Thunderbolt: %s"
|
||||
|
||||
#: js/ui/status/volume.js:128
|
||||
#: js/ui/status/volume.js:135
|
||||
msgid "Volume changed"
|
||||
msgstr "S'ha canviat el volum"
|
||||
|
||||
#: js/ui/status/volume.js:170
|
||||
msgid "Volume"
|
||||
msgstr "Volum"
|
||||
|
||||
#. Translators: this is for display mirroring i.e. cloning.
|
||||
#. * Try to keep it under around 15 characters.
|
||||
#.
|
||||
@ -2059,22 +2067,22 @@ msgstr "Cerca"
|
||||
msgid "“%s” is ready"
|
||||
msgstr "«%s» ja està a punt"
|
||||
|
||||
#: js/ui/windowManager.js:72
|
||||
#: js/ui/windowManager.js:74
|
||||
msgid "Do you want to keep these display settings?"
|
||||
msgstr "Voleu mantenir aquesta configuració de la pantalla?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: js/ui/windowManager.js:84
|
||||
#: js/ui/windowManager.js:86
|
||||
msgid "Revert Settings"
|
||||
msgstr "Descarta els canvis"
|
||||
|
||||
#: js/ui/windowManager.js:87
|
||||
#: js/ui/windowManager.js:89
|
||||
msgid "Keep Changes"
|
||||
msgstr "Mantén els canvis"
|
||||
|
||||
#: js/ui/windowManager.js:105
|
||||
#: js/ui/windowManager.js:107
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2083,7 +2091,7 @@ msgstr[1] "Es descartaran els canvis d'aquí %d segons"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:660
|
||||
#: js/ui/windowManager.js:689
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2136,19 +2144,19 @@ msgstr "Mou a l'espai de treball superior"
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Mou a l'espai de treball inferior"
|
||||
|
||||
#: js/ui/windowMenu.js:140
|
||||
#: js/ui/windowMenu.js:139
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "Mou a la pantalla de dalt"
|
||||
|
||||
#: js/ui/windowMenu.js:149
|
||||
#: js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Mou a la pantalla de baix"
|
||||
|
||||
#: js/ui/windowMenu.js:158
|
||||
#: js/ui/windowMenu.js:157
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Mou a la pantalla de l'esquerra"
|
||||
|
||||
#: js/ui/windowMenu.js:167
|
||||
#: js/ui/windowMenu.js:166
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Mou a la pantalla de la dreta"
|
||||
|
||||
@ -2161,28 +2169,28 @@ msgstr "Calendari de l'Evolution"
|
||||
msgid "evolution"
|
||||
msgstr "evolution"
|
||||
|
||||
#: src/main.c:432
|
||||
#: src/main.c:410
|
||||
msgid "Print version"
|
||||
msgstr "Mostra la versió"
|
||||
|
||||
#: src/main.c:438
|
||||
#: src/main.c:416
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada"
|
||||
|
||||
#: src/main.c:444
|
||||
#: src/main.c:422
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada"
|
||||
|
||||
#: src/main.c:450
|
||||
#: src/main.c:428
|
||||
msgid "List possible modes"
|
||||
msgstr "Llista els modes possibles"
|
||||
|
||||
#: src/shell-app.c:270
|
||||
#: src/shell-app.c:272
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Desconegut"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:523
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "No s'ha pogut iniciar «%s»"
|
||||
|
520
po/en_GB.po
520
po/en_GB.po
File diff suppressed because it is too large
Load Diff
164
po/es.po
164
po/es.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2018-04-13 19:54+0000\n"
|
||||
"PO-Revision-Date: 2018-04-25 12:54+0200\n"
|
||||
"POT-Creation-Date: 2018-07-24 18:34+0000\n"
|
||||
"PO-Revision-Date: 2018-07-27 13:15+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
||||
"Language: es\n"
|
||||
@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
msgid "System"
|
||||
@ -366,20 +366,20 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: js/gdm/loginDialog.js:315
|
||||
#: js/gdm/loginDialog.js:319
|
||||
msgid "Choose Session"
|
||||
msgstr "Elegir sesión"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: js/gdm/loginDialog.js:458
|
||||
#: js/gdm/loginDialog.js:462
|
||||
msgid "Not listed?"
|
||||
msgstr "¿No está en la lista?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:887
|
||||
#: js/gdm/loginDialog.js:891
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(ej., usuario o %s)"
|
||||
@ -387,12 +387,12 @@ msgstr "(ej., usuario o %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243
|
||||
#: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
|
||||
#: js/ui/components/networkAgent.js:261
|
||||
msgid "Username: "
|
||||
msgstr "Nombre de usuario:"
|
||||
|
||||
#: js/gdm/loginDialog.js:1228
|
||||
#: js/gdm/loginDialog.js:1234
|
||||
msgid "Login Window"
|
||||
msgstr "Ventana de inicio de sesión"
|
||||
|
||||
@ -405,7 +405,7 @@ msgstr "Error de autenticación"
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: js/gdm/util.js:482
|
||||
#: js/gdm/util.js:485
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(o pase el dedo)"
|
||||
|
||||
@ -645,23 +645,23 @@ msgstr "Frecuentes"
|
||||
msgid "All"
|
||||
msgstr "Todas"
|
||||
|
||||
#: js/ui/appDisplay.js:1886
|
||||
#: js/ui/appDisplay.js:1890
|
||||
msgid "New Window"
|
||||
msgstr "Ventana nueva"
|
||||
|
||||
#: js/ui/appDisplay.js:1900
|
||||
#: js/ui/appDisplay.js:1904
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Lanzar usando la tarjeta gráfica dedicada"
|
||||
|
||||
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285
|
||||
#: js/ui/appDisplay.js:1931 js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Quitar de los favoritos"
|
||||
|
||||
#: js/ui/appDisplay.js:1933
|
||||
#: js/ui/appDisplay.js:1937
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Añadir a los favoritos"
|
||||
|
||||
#: js/ui/appDisplay.js:1943
|
||||
#: js/ui/appDisplay.js:1947
|
||||
msgid "Show Details"
|
||||
msgstr "Mostrar detalles"
|
||||
|
||||
@ -808,35 +808,35 @@ msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Todo el día"
|
||||
|
||||
#: js/ui/calendar.js:864
|
||||
#: js/ui/calendar.js:866
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d de %B"
|
||||
|
||||
#: js/ui/calendar.js:868
|
||||
#: js/ui/calendar.js:870
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d de %B de %Y"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "No hay notificaciones"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "No hay eventos"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1131
|
||||
msgid "Clear All"
|
||||
msgstr "Limpiar todo"
|
||||
|
||||
#. Translators: %s is an application name
|
||||
#: js/ui/closeDialog.js:44
|
||||
#: js/ui/closeDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "«%s» no responde."
|
||||
|
||||
#: js/ui/closeDialog.js:45
|
||||
#: js/ui/closeDialog.js:48
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -844,11 +844,11 @@ msgstr ""
|
||||
"Puede elegir esperar un momento para que continúe o forzar a la aplicación a "
|
||||
"terminar."
|
||||
|
||||
#: js/ui/closeDialog.js:61
|
||||
#: js/ui/closeDialog.js:64
|
||||
msgid "Force Quit"
|
||||
msgstr "Forzar la salida"
|
||||
|
||||
#: js/ui/closeDialog.js:64
|
||||
#: js/ui/closeDialog.js:67
|
||||
msgid "Wait"
|
||||
msgstr "Esperar"
|
||||
|
||||
@ -865,7 +865,7 @@ msgstr "Dispositivo externo desconectado"
|
||||
msgid "Open with %s"
|
||||
msgstr "Abrir con %s"
|
||||
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
|
||||
msgid "Password:"
|
||||
msgstr "Contraseña:"
|
||||
|
||||
@ -902,11 +902,11 @@ msgstr "Contraseña de la clave privada:"
|
||||
msgid "Service: "
|
||||
msgstr "Servicio:"
|
||||
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "La red inalámbrica requiere autenticación"
|
||||
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -915,7 +915,7 @@ msgstr ""
|
||||
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
||||
"inalámbrica «%s»."
|
||||
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Autenticación 802.1X cableada"
|
||||
|
||||
@ -923,15 +923,15 @@ msgstr "Autenticación 802.1X cableada"
|
||||
msgid "Network name: "
|
||||
msgstr "Nombre de la red: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
|
||||
msgid "DSL authentication"
|
||||
msgstr "Autenticación DSL"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
|
||||
msgid "PIN code required"
|
||||
msgstr "Código PIN requerido"
|
||||
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
|
||||
|
||||
@ -939,17 +939,17 @@ msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Contraseña de la red de banda ancha móvil"
|
||||
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
|
||||
#: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Se requiere una contraseña para conectarse a «%s»."
|
||||
|
||||
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
|
||||
msgid "Network Manager"
|
||||
msgstr "Gestor de la red"
|
||||
|
||||
@ -969,7 +969,7 @@ msgstr "Autenticar"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
|
||||
#: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
|
||||
msgid "Sorry, that didn’t work. Please try again."
|
||||
msgstr "Eso no ha funcionado. Inténtelo de nuevo."
|
||||
|
||||
@ -1301,13 +1301,13 @@ msgid "Leave On"
|
||||
msgstr "Dejar activada"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1294
|
||||
msgid "Turn On"
|
||||
msgstr "Encender"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:154 js/ui/status/network.js:337
|
||||
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1294 js/ui/status/network.js:1409
|
||||
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
|
||||
#: js/ui/status/rfkill.js:117
|
||||
msgid "Turn Off"
|
||||
@ -1369,7 +1369,7 @@ msgstr "Ver fuente"
|
||||
msgid "Web Page"
|
||||
msgstr "Página web"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1495
|
||||
msgid "System Information"
|
||||
msgstr "Información del sistema"
|
||||
|
||||
@ -1443,22 +1443,22 @@ msgstr "Pulse Esc para salir"
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Pulse cualquier tecla para salir"
|
||||
|
||||
#: js/ui/panel.js:355
|
||||
#: js/ui/panel.js:356
|
||||
msgid "Quit"
|
||||
msgstr "Salir"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:411
|
||||
#: js/ui/panel.js:412
|
||||
msgid "Activities"
|
||||
msgstr "Actividades"
|
||||
|
||||
#: js/ui/panel.js:692
|
||||
#: js/ui/panel.js:693
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: js/ui/panel.js:811
|
||||
#: js/ui/panel.js:816
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
@ -1467,7 +1467,7 @@ msgstr "Barra superior"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:291
|
||||
#: js/ui/popupMenu.js:300
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1475,15 +1475,15 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Introducir un comando"
|
||||
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:174
|
||||
msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
|
||||
#: js/ui/runDialog.js:273
|
||||
#: js/ui/runDialog.js:274
|
||||
msgid "Restart is not available on Wayland"
|
||||
msgstr "Reiniciar si no está disponible en Wayland"
|
||||
|
||||
#: js/ui/runDialog.js:278
|
||||
#: js/ui/runDialog.js:279
|
||||
msgid "Restarting…"
|
||||
msgstr "Reiniciando…"
|
||||
|
||||
@ -1690,7 +1690,7 @@ msgid "<unknown>"
|
||||
msgstr "<desconocido>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1310
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1323
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s apagada"
|
||||
@ -1716,7 +1716,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "Desconectando %s"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1302
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1315
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "Conectando %s"
|
||||
@ -1756,7 +1756,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "Configuración de banda ancha móvil"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1307
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1320
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "Hardware %s desactivado"
|
||||
@ -1812,81 +1812,81 @@ msgstr "No hay redes"
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Usar el interruptor hardware para apagar"
|
||||
|
||||
#: js/ui/status/network.js:1173
|
||||
#: js/ui/status/network.js:1186
|
||||
msgid "Select Network"
|
||||
msgstr "Seleccionar red"
|
||||
|
||||
#: js/ui/status/network.js:1179
|
||||
#: js/ui/status/network.js:1192
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Configuración de Wi-Fi"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1298
|
||||
#: js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "Punto de acceso %s activo"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1313
|
||||
#: js/ui/status/network.js:1326
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s no conectado"
|
||||
|
||||
#: js/ui/status/network.js:1413
|
||||
#: js/ui/status/network.js:1426
|
||||
msgid "connecting…"
|
||||
msgstr "conectando…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1416
|
||||
#: js/ui/status/network.js:1429
|
||||
msgid "authentication required"
|
||||
msgstr "se necesita autenticación"
|
||||
|
||||
#: js/ui/status/network.js:1418
|
||||
#: js/ui/status/network.js:1431
|
||||
msgid "connection failed"
|
||||
msgstr "falló la conexión"
|
||||
|
||||
#: js/ui/status/network.js:1472
|
||||
#: js/ui/status/network.js:1485
|
||||
msgid "VPN Settings"
|
||||
msgstr "Configuración de VPN"
|
||||
|
||||
#: js/ui/status/network.js:1485
|
||||
#: js/ui/status/network.js:1498
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: js/ui/status/network.js:1495
|
||||
#: js/ui/status/network.js:1508
|
||||
msgid "VPN Off"
|
||||
msgstr "VPN apagada"
|
||||
|
||||
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93
|
||||
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
|
||||
msgid "Network Settings"
|
||||
msgstr "Configuración de la red"
|
||||
|
||||
#: js/ui/status/network.js:1588
|
||||
#: js/ui/status/network.js:1601
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "%s conexión cableada"
|
||||
msgstr[1] "%s conexiones cableadas"
|
||||
|
||||
#: js/ui/status/network.js:1592
|
||||
#: js/ui/status/network.js:1605
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "%s conexión inalámbrica"
|
||||
msgstr[1] "%s conexiones inalámbricas"
|
||||
|
||||
#: js/ui/status/network.js:1596
|
||||
#: js/ui/status/network.js:1609
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s conexión por módem"
|
||||
msgstr[1] "%s conexiones por módem"
|
||||
|
||||
#: js/ui/status/network.js:1728
|
||||
#: js/ui/status/network.js:1741
|
||||
msgid "Connection failed"
|
||||
msgstr "Falló la conexión"
|
||||
|
||||
#: js/ui/status/network.js:1729
|
||||
#: js/ui/status/network.js:1742
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Falló la activación de la conexión de red"
|
||||
|
||||
@ -1937,6 +1937,15 @@ msgstr "%d∶%02d para la carga completa (%d %%)"
|
||||
msgid "%d %%"
|
||||
msgstr "%d %%"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:45
|
||||
msgid "Screen is Being Shared"
|
||||
msgstr "Se está compartiendo la pantalla"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:47
|
||||
#| msgid "Turn Off"
|
||||
msgid "Turn off"
|
||||
msgstr "Apagar"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
@ -1968,16 +1977,16 @@ msgstr "Suspender"
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:294
|
||||
#: js/ui/status/thunderbolt.js:298
|
||||
msgid "Thunderbolt"
|
||||
msgstr "Thunderbolt"
|
||||
|
||||
#. we are done
|
||||
#: js/ui/status/thunderbolt.js:350
|
||||
#: js/ui/status/thunderbolt.js:354
|
||||
msgid "Unknown Thunderbolt device"
|
||||
msgstr "Dispositivo Thunderbolt desconocido"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:351
|
||||
#: js/ui/status/thunderbolt.js:355
|
||||
msgid ""
|
||||
"New device has been detected while you were away. Please disconnect and "
|
||||
"reconnect the device to start using it."
|
||||
@ -1985,13 +1994,12 @@ msgstr ""
|
||||
"Se ha detectado un dispositivo nuevo mientras estaba fuera. Desconéctelo y "
|
||||
"vuélvalo a conectar para empezar a usarlo."
|
||||
|
||||
#: js/ui/status/thunderbolt.js:356
|
||||
#: js/ui/status/thunderbolt.js:360
|
||||
msgid "Thunderbolt authorization error"
|
||||
msgstr "Error de autorización de Thunderbolt"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:357
|
||||
#: js/ui/status/thunderbolt.js:361
|
||||
#, javascript-format
|
||||
#| msgid "Could not authorize the thunderbolt device: %s"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s"
|
||||
|
||||
@ -2076,7 +2084,7 @@ msgstr[1] "La configuración se revertirá en %d segundos"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:660
|
||||
#: js/ui/windowManager.js:668
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2129,19 +2137,19 @@ msgstr "Subir a un área de trabajo"
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Bajar a un área de trabajo"
|
||||
|
||||
#: js/ui/windowMenu.js:140
|
||||
#: js/ui/windowMenu.js:139
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "Mover a la pantalla de arriba"
|
||||
|
||||
#: js/ui/windowMenu.js:149
|
||||
#: js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Mover a la pantalla de abajo"
|
||||
|
||||
#: js/ui/windowMenu.js:158
|
||||
#: js/ui/windowMenu.js:157
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Mover a la pantalla de la izquierda"
|
||||
|
||||
#: js/ui/windowMenu.js:167
|
||||
#: js/ui/windowMenu.js:166
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Mover a la pantalla de la derecha"
|
||||
|
||||
@ -2172,12 +2180,12 @@ msgstr ""
|
||||
msgid "List possible modes"
|
||||
msgstr "Listar los modos posibles"
|
||||
|
||||
#: src/shell-app.c:270
|
||||
#: src/shell-app.c:272
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocido"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:523
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Falló al lanzar «%s»"
|
||||
|
278
po/fr.po
278
po/fr.po
@ -14,22 +14,22 @@
|
||||
# Alain Lojewski <allomervan@gmail.com>, 2014-2018.
|
||||
# Erwan Georget <egeorget@opmbx.org>, 2016.
|
||||
# Claude Paroz <claude@2xlibre.net>, 2010-2011, 2016.
|
||||
# Charles Monzat <superboa@hotmail.fr>, 2016.
|
||||
# Charles Monzat <superboa@hotmail.fr>, 2016, 2018.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master fr\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2018-03-03 10:22+0000\n"
|
||||
"PO-Revision-Date: 2018-03-01 09:00+0100\n"
|
||||
"Last-Translator: Alain Lojewski <allomervan@gmail.com>\n"
|
||||
"POT-Creation-Date: 2018-08-01 18:08+0000\n"
|
||||
"PO-Revision-Date: 2018-08-09 19:51+0200\n"
|
||||
"Last-Translator: Charles Monzat <superboa@hotmail.fr>\n"
|
||||
"Language-Team: français <gnomefr@traduc.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 1.8.12\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
msgid "System"
|
||||
@ -234,7 +234,7 @@ msgstr ""
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:116
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "Combinaison de touches pour ouvrir la vue d'ensemble"
|
||||
msgstr "Combinaison de touches pour ouvrir la vue d’ensemble"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:117
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
@ -312,34 +312,34 @@ msgstr ""
|
||||
"Si vrai, seules les fenêtres de l’espace de travail actuel sont affichées "
|
||||
"dans le sélecteur. Sinon, toutes les fenêtres y sont incluses."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:197
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Attacher les dialogues modaux à leur fenêtre parente"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:208
|
||||
#: data/org.gnome.shell.gschema.xml.in:216
|
||||
#: data/org.gnome.shell.gschema.xml.in:224
|
||||
#: data/org.gnome.shell.gschema.xml.in:232
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Cette clé prend le pas sur la clé dans org.gnome.mutter lorsque GNOME Shell "
|
||||
"est lancé."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:206
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Activer l’empilage des fenêtres déposées sur les bords de l'écran"
|
||||
msgstr "Activer l’empilage des fenêtres déposées sur les bords de l’écran"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:214
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Les espaces de travail sont gérés dynamiquement"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:222
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Les espaces de travail sont uniquement sur l’écran principal"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:230
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retarder les changements de focus en mode souris jusqu’à ce que le pointeur "
|
||||
@ -362,7 +362,7 @@ msgstr ""
|
||||
"préférences de %s :"
|
||||
|
||||
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
|
||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
|
||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
|
||||
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
|
||||
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
|
||||
msgid "Cancel"
|
||||
@ -382,20 +382,20 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Se connecter"
|
||||
|
||||
#: js/gdm/loginDialog.js:315
|
||||
#: js/gdm/loginDialog.js:319
|
||||
msgid "Choose Session"
|
||||
msgstr "Choisir une session"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: js/gdm/loginDialog.js:458
|
||||
#: js/gdm/loginDialog.js:462
|
||||
msgid "Not listed?"
|
||||
msgstr "Absent de la liste ?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:887
|
||||
#: js/gdm/loginDialog.js:891
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(par ex. utilisateur ou %s)"
|
||||
@ -403,12 +403,12 @@ msgstr "(par ex. utilisateur ou %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243
|
||||
#: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
|
||||
#: js/ui/components/networkAgent.js:261
|
||||
msgid "Username: "
|
||||
msgstr "Nom d’utilisateur : "
|
||||
|
||||
#: js/gdm/loginDialog.js:1228
|
||||
#: js/gdm/loginDialog.js:1234
|
||||
msgid "Login Window"
|
||||
msgstr "Fenêtre de connexion"
|
||||
|
||||
@ -421,7 +421,7 @@ msgstr "Erreur d’authentification"
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: js/gdm/util.js:482
|
||||
#: js/gdm/util.js:485
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(ou faites glisser le doigt)"
|
||||
|
||||
@ -662,32 +662,32 @@ msgstr "Fréquemment utilisées"
|
||||
msgid "All"
|
||||
msgstr "Toutes"
|
||||
|
||||
#: js/ui/appDisplay.js:1886
|
||||
#: js/ui/appDisplay.js:1890
|
||||
msgid "New Window"
|
||||
msgstr "Nouvelle fenêtre"
|
||||
|
||||
#: js/ui/appDisplay.js:1900
|
||||
#: js/ui/appDisplay.js:1904
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Démarrer en utilisant la carte graphique dédiée"
|
||||
|
||||
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285
|
||||
#: js/ui/appDisplay.js:1931 js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Enlever des favoris"
|
||||
|
||||
#: js/ui/appDisplay.js:1933
|
||||
#: js/ui/appDisplay.js:1937
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Ajouter aux favoris"
|
||||
|
||||
#: js/ui/appDisplay.js:1943
|
||||
#: js/ui/appDisplay.js:1947
|
||||
msgid "Show Details"
|
||||
msgstr "Afficher les détails"
|
||||
|
||||
#: js/ui/appFavorites.js:138
|
||||
#: js/ui/appFavorites.js:140
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s a été ajouté à vos favoris."
|
||||
|
||||
#: js/ui/appFavorites.js:172
|
||||
#: js/ui/appFavorites.js:174
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s a été supprimé de vos favoris."
|
||||
@ -708,7 +708,7 @@ msgstr "Casque audio"
|
||||
msgid "Headset"
|
||||
msgstr "Micro-casque"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
|
||||
msgid "Microphone"
|
||||
msgstr "Microphone"
|
||||
|
||||
@ -720,7 +720,7 @@ msgstr "Modifier l’arrière-plan…"
|
||||
msgid "Display Settings"
|
||||
msgstr "Paramètres d’affichage"
|
||||
|
||||
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264
|
||||
#: js/ui/backgroundMenu.js:22
|
||||
msgid "Settings"
|
||||
msgstr "Paramètres"
|
||||
|
||||
@ -840,35 +840,35 @@ msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Journée"
|
||||
|
||||
#: js/ui/calendar.js:864
|
||||
#: js/ui/calendar.js:866
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A %d %B"
|
||||
|
||||
#: js/ui/calendar.js:868
|
||||
#: js/ui/calendar.js:870
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A %d %B, %Y"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "Aucune notification"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "Aucun évènement"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1131
|
||||
msgid "Clear All"
|
||||
msgstr "Effacer tout"
|
||||
|
||||
#. Translators: %s is an application name
|
||||
#: js/ui/closeDialog.js:44
|
||||
#: js/ui/closeDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "« %s » ne répond pas."
|
||||
|
||||
#: js/ui/closeDialog.js:45
|
||||
#: js/ui/closeDialog.js:48
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -876,11 +876,11 @@ msgstr ""
|
||||
"Vous pouvez soit attendre un peu pour continuer, soit forcer l’application à "
|
||||
"quitter."
|
||||
|
||||
#: js/ui/closeDialog.js:61
|
||||
#: js/ui/closeDialog.js:64
|
||||
msgid "Force Quit"
|
||||
msgstr "Forcer à quitter"
|
||||
|
||||
#: js/ui/closeDialog.js:64
|
||||
#: js/ui/closeDialog.js:67
|
||||
msgid "Wait"
|
||||
msgstr "Attendre"
|
||||
|
||||
@ -897,7 +897,7 @@ msgstr "Disque externe déconnecté"
|
||||
msgid "Open with %s"
|
||||
msgstr "Ouvrir avec %s"
|
||||
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
|
||||
msgid "Password:"
|
||||
msgstr "Mot de passe :"
|
||||
|
||||
@ -934,11 +934,11 @@ msgstr "Mot de passe de la clé privée : "
|
||||
msgid "Service: "
|
||||
msgstr "Service : "
|
||||
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "L’authentification est requise par le réseau sans fil"
|
||||
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -947,7 +947,7 @@ msgstr ""
|
||||
"Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau "
|
||||
"sans fil « %s »"
|
||||
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Authentification filaire 802.1X"
|
||||
|
||||
@ -955,15 +955,15 @@ msgstr "Authentification filaire 802.1X"
|
||||
msgid "Network name: "
|
||||
msgstr "Nom du réseau : "
|
||||
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
|
||||
msgid "DSL authentication"
|
||||
msgstr "Authentification DSL"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
|
||||
msgid "PIN code required"
|
||||
msgstr "Code PIN requis"
|
||||
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Un code PIN est nécessaire pour les connexions mobiles"
|
||||
|
||||
@ -971,29 +971,29 @@ msgstr "Un code PIN est nécessaire pour les connexions mobiles"
|
||||
msgid "PIN: "
|
||||
msgstr "PIN : "
|
||||
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Mot de passe de la connexion mobile"
|
||||
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
|
||||
#: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Un mot de passe est requis pour se connecter à « %s »."
|
||||
|
||||
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
|
||||
msgid "Network Manager"
|
||||
msgstr "Gestionnaire de réseau"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:43
|
||||
#: js/ui/components/polkitAgent.js:48
|
||||
msgid "Authentication Required"
|
||||
msgstr "Authentification nécessaire"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:71
|
||||
#: js/ui/components/polkitAgent.js:76
|
||||
msgid "Administrator"
|
||||
msgstr "Administrateur"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:151
|
||||
#: js/ui/components/polkitAgent.js:156
|
||||
msgid "Authenticate"
|
||||
msgstr "S’authentifier"
|
||||
|
||||
@ -1001,7 +1001,7 @@ msgstr "S’authentifier"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327
|
||||
#: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
|
||||
msgid "Sorry, that didn’t work. Please try again."
|
||||
msgstr "Échec de l’authentification. Essayez à nouveau."
|
||||
|
||||
@ -1061,7 +1061,7 @@ msgstr "Ajouter des horloges locales…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Horloges locales"
|
||||
|
||||
#: js/ui/dateMenu.js:225
|
||||
#: js/ui/dateMenu.js:227
|
||||
msgid "Weather"
|
||||
msgstr "Météo"
|
||||
|
||||
@ -1069,7 +1069,7 @@ msgstr "Météo"
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:289
|
||||
#: js/ui/dateMenu.js:291
|
||||
#, javascript-format
|
||||
msgid "%s all day."
|
||||
msgstr "%s toute la journée."
|
||||
@ -1078,7 +1078,7 @@ msgstr "%s toute la journée."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:295
|
||||
#: js/ui/dateMenu.js:297
|
||||
#, javascript-format
|
||||
msgid "%s, then %s later."
|
||||
msgstr "%s, puis %s plus tard."
|
||||
@ -1087,30 +1087,30 @@ msgstr "%s, puis %s plus tard."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:301
|
||||
#: js/ui/dateMenu.js:303
|
||||
#, javascript-format
|
||||
msgid "%s, then %s, followed by %s later."
|
||||
msgstr "%s, puis %s, suivi par %s plus tard."
|
||||
|
||||
#: js/ui/dateMenu.js:312
|
||||
#: js/ui/dateMenu.js:314
|
||||
msgid "Select a location…"
|
||||
msgstr "Choisir un emplacement…"
|
||||
|
||||
#: js/ui/dateMenu.js:315
|
||||
#: js/ui/dateMenu.js:317
|
||||
msgid "Loading…"
|
||||
msgstr "Chargement…"
|
||||
|
||||
#. Translators: %s is a temperature with unit, e.g. "23℃"
|
||||
#: js/ui/dateMenu.js:321
|
||||
#: js/ui/dateMenu.js:323
|
||||
#, javascript-format
|
||||
msgid "Feels like %s."
|
||||
msgstr "Température ressentie : %s."
|
||||
|
||||
#: js/ui/dateMenu.js:324
|
||||
#: js/ui/dateMenu.js:326
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Chercher les informations météorologiques en ligne"
|
||||
|
||||
#: js/ui/dateMenu.js:326
|
||||
#: js/ui/dateMenu.js:328
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Les informations météorologiques ne sont pas disponibles actuellement"
|
||||
|
||||
@ -1344,13 +1344,13 @@ msgid "Leave On"
|
||||
msgstr "Laisser activé"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1294
|
||||
msgid "Turn On"
|
||||
msgstr "Activer"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:154 js/ui/status/network.js:337
|
||||
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1294 js/ui/status/network.js:1409
|
||||
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
|
||||
#: js/ui/status/rfkill.js:117
|
||||
msgid "Turn Off"
|
||||
@ -1412,7 +1412,7 @@ msgstr "Afficher la source"
|
||||
msgid "Web Page"
|
||||
msgstr "Page Web"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1495
|
||||
msgid "System Information"
|
||||
msgstr "Informations du système"
|
||||
|
||||
@ -1424,6 +1424,10 @@ msgstr "Artiste inconnu"
|
||||
msgid "Unknown title"
|
||||
msgstr "Titre inconnu"
|
||||
|
||||
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
#: js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "Annuler"
|
||||
@ -1466,42 +1470,42 @@ msgstr "Associer une touche"
|
||||
msgid "Done"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: js/ui/padOsd.js:740
|
||||
#: js/ui/padOsd.js:742
|
||||
msgid "Edit…"
|
||||
msgstr "Édition…"
|
||||
|
||||
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887
|
||||
#: js/ui/padOsd.js:784 js/ui/padOsd.js:889
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
|
||||
#: js/ui/padOsd.js:841
|
||||
#: js/ui/padOsd.js:843
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Appuyez sur un bouton pour le configurer"
|
||||
|
||||
#: js/ui/padOsd.js:842
|
||||
#: js/ui/padOsd.js:844
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Appuyez sur Échap. pour quitter"
|
||||
|
||||
#: js/ui/padOsd.js:845
|
||||
#: js/ui/padOsd.js:847
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Appuyez sur une touche pour quitter"
|
||||
|
||||
#: js/ui/panel.js:355
|
||||
#: js/ui/panel.js:356
|
||||
msgid "Quit"
|
||||
msgstr "Quitter"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:411
|
||||
#: js/ui/panel.js:412
|
||||
msgid "Activities"
|
||||
msgstr "Activités"
|
||||
|
||||
#: js/ui/panel.js:692
|
||||
#: js/ui/panel.js:693
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Système"
|
||||
|
||||
#: js/ui/panel.js:811
|
||||
#: js/ui/panel.js:816
|
||||
msgid "Top Bar"
|
||||
msgstr "Barre supérieure"
|
||||
|
||||
@ -1510,23 +1514,23 @@ msgstr "Barre supérieure"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:291
|
||||
#: js/ui/popupMenu.js:300
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:70
|
||||
#: js/ui/runDialog.js:74
|
||||
msgid "Enter a Command"
|
||||
msgstr "Saisissez une commande"
|
||||
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175
|
||||
#: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
#: js/ui/runDialog.js:273
|
||||
#: js/ui/runDialog.js:278
|
||||
msgid "Restart is not available on Wayland"
|
||||
msgstr "Le redémarrage n’est pas disponible sur Wayland"
|
||||
|
||||
#: js/ui/runDialog.js:278
|
||||
#: js/ui/runDialog.js:283
|
||||
msgid "Restarting…"
|
||||
msgstr "Redémarrage…"
|
||||
|
||||
@ -1550,7 +1554,7 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d nouvelle notification"
|
||||
msgstr[1] "%d nouvelles notifications"
|
||||
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:283
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:294
|
||||
msgid "Lock"
|
||||
msgstr "Verrouiller"
|
||||
|
||||
@ -1706,7 +1710,7 @@ msgstr "Paramètres de confidentialité"
|
||||
|
||||
#: js/ui/status/location.js:196
|
||||
msgid "Location In Use"
|
||||
msgstr "Localisation en cours d'utilisation"
|
||||
msgstr "Localisation en cours d’utilisation"
|
||||
|
||||
#: js/ui/status/location.js:200
|
||||
msgid "Location Disabled"
|
||||
@ -1733,7 +1737,7 @@ msgid "<unknown>"
|
||||
msgstr "<inconnu>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1310
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1323
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s éteint"
|
||||
@ -1759,7 +1763,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "Déconnexion de %s en cours"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1302
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1315
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "Connexion de %s en cours"
|
||||
@ -1799,7 +1803,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "Paramètres connexion mobile"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1307
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1320
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "Équipement %s désactivé"
|
||||
@ -1855,81 +1859,81 @@ msgstr "Aucun réseau disponible"
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Utiliser l’interrupteur matériel pour éteindre"
|
||||
|
||||
#: js/ui/status/network.js:1173
|
||||
#: js/ui/status/network.js:1186
|
||||
msgid "Select Network"
|
||||
msgstr "Sélectionner un réseau"
|
||||
|
||||
#: js/ui/status/network.js:1179
|
||||
#: js/ui/status/network.js:1192
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Paramètres Wi-Fi"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1298
|
||||
#: js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "Point d’accès %s actif"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1313
|
||||
#: js/ui/status/network.js:1326
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s non connecté"
|
||||
|
||||
#: js/ui/status/network.js:1413
|
||||
#: js/ui/status/network.js:1426
|
||||
msgid "connecting…"
|
||||
msgstr "connexion…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1416
|
||||
#: js/ui/status/network.js:1429
|
||||
msgid "authentication required"
|
||||
msgstr "authentification nécessaire"
|
||||
|
||||
#: js/ui/status/network.js:1418
|
||||
#: js/ui/status/network.js:1431
|
||||
msgid "connection failed"
|
||||
msgstr "échec de connexion"
|
||||
|
||||
#: js/ui/status/network.js:1472
|
||||
#: js/ui/status/network.js:1485
|
||||
msgid "VPN Settings"
|
||||
msgstr "Paramètres VPN"
|
||||
|
||||
#: js/ui/status/network.js:1485
|
||||
#: js/ui/status/network.js:1498
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: js/ui/status/network.js:1495
|
||||
#: js/ui/status/network.js:1508
|
||||
msgid "VPN Off"
|
||||
msgstr "VPN désactivé"
|
||||
|
||||
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93
|
||||
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
|
||||
msgid "Network Settings"
|
||||
msgstr "Paramètres du réseau"
|
||||
|
||||
#: js/ui/status/network.js:1588
|
||||
#: js/ui/status/network.js:1601
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "%s connexion filaire."
|
||||
msgstr[1] "%s connexions filaires."
|
||||
|
||||
#: js/ui/status/network.js:1592
|
||||
#: js/ui/status/network.js:1605
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "%s connexion Wi-Fi."
|
||||
msgstr[1] "%s connexions Wi-Fi."
|
||||
|
||||
#: js/ui/status/network.js:1596
|
||||
#: js/ui/status/network.js:1609
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s connexion à un modem."
|
||||
msgstr[1] "%s connexions à des modem."
|
||||
|
||||
#: js/ui/status/network.js:1728
|
||||
#: js/ui/status/network.js:1741
|
||||
msgid "Connection failed"
|
||||
msgstr "Échec de connexion"
|
||||
|
||||
#: js/ui/status/network.js:1729
|
||||
#: js/ui/status/network.js:1742
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "L’activation de la connexion réseau a échoué"
|
||||
|
||||
@ -1947,11 +1951,11 @@ msgstr "Reprendre"
|
||||
|
||||
#: js/ui/status/nightLight.js:71
|
||||
msgid "Disable Until Tomorrow"
|
||||
msgstr "Désactiver jusqu'à demain"
|
||||
msgstr "Désactiver jusqu’à demain"
|
||||
|
||||
#: js/ui/status/power.js:61
|
||||
msgid "Power Settings"
|
||||
msgstr "Paramètres de gestion de l'énergie"
|
||||
msgstr "Paramètres de gestion de l’énergie"
|
||||
|
||||
#: js/ui/status/power.js:77
|
||||
msgid "Fully Charged"
|
||||
@ -1980,6 +1984,14 @@ msgstr "%d∶%02d avant chargement complet (%d %%)"
|
||||
msgid "%d %%"
|
||||
msgstr "%d %%"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:46
|
||||
msgid "Screen is Being Shared"
|
||||
msgstr "L’écran est partagé"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:48
|
||||
msgid "Turn off"
|
||||
msgstr "Éteindre"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
@ -1999,28 +2011,28 @@ msgstr "Fermer la session"
|
||||
msgid "Account Settings"
|
||||
msgstr "Paramètres du compte"
|
||||
|
||||
#: js/ui/status/system.js:268
|
||||
#: js/ui/status/system.js:279
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Verrouillage de l’orientation "
|
||||
|
||||
#: js/ui/status/system.js:294
|
||||
#: js/ui/status/system.js:305
|
||||
msgid "Suspend"
|
||||
msgstr "Mettre en veille"
|
||||
|
||||
#: js/ui/status/system.js:304
|
||||
#: js/ui/status/system.js:315
|
||||
msgid "Power Off"
|
||||
msgstr "Éteindre"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:272
|
||||
#: js/ui/status/thunderbolt.js:298
|
||||
msgid "Thunderbolt"
|
||||
msgstr "Interface Thunderbolt"
|
||||
|
||||
#. we are done
|
||||
#: js/ui/status/thunderbolt.js:328
|
||||
#: js/ui/status/thunderbolt.js:354
|
||||
msgid "Unknown Thunderbolt device"
|
||||
msgstr "Périphérique Thunderbolt inconnu"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:329
|
||||
#: js/ui/status/thunderbolt.js:355
|
||||
msgid ""
|
||||
"New device has been detected while you were away. Please disconnect and "
|
||||
"reconnect the device to start using it."
|
||||
@ -2028,23 +2040,19 @@ msgstr ""
|
||||
"Un nouveau périphérique a été détecté pendant votre absence. Veuillez le "
|
||||
"débrancher et rebrancher avant de commencer à l’utiliser"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:334
|
||||
#: js/ui/status/thunderbolt.js:360
|
||||
msgid "Thunderbolt authorization error"
|
||||
msgstr "Erreur d’autorisation Thunderbolt"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:335
|
||||
#: js/ui/status/thunderbolt.js:361
|
||||
#, javascript-format
|
||||
msgid "Could not authorize the thunderbolt device: %s"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Impossible d’autoriser le périphérique Thunderbolt : %s"
|
||||
|
||||
#: js/ui/status/volume.js:128
|
||||
#: js/ui/status/volume.js:135
|
||||
msgid "Volume changed"
|
||||
msgstr "Volume modifié"
|
||||
|
||||
#: js/ui/status/volume.js:170
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
#. Translators: this is for display mirroring i.e. cloning.
|
||||
#. * Try to keep it under around 15 characters.
|
||||
#.
|
||||
@ -2094,22 +2102,22 @@ msgstr "Recherche"
|
||||
msgid "“%s” is ready"
|
||||
msgstr "« %s » est prêt"
|
||||
|
||||
#: js/ui/windowManager.js:72
|
||||
#: js/ui/windowManager.js:74
|
||||
msgid "Do you want to keep these display settings?"
|
||||
msgstr "Voulez-vous conserver ces paramètres d’affichage ?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: js/ui/windowManager.js:84
|
||||
#: js/ui/windowManager.js:86
|
||||
msgid "Revert Settings"
|
||||
msgstr "Restaurer les paramètres"
|
||||
|
||||
#: js/ui/windowManager.js:87
|
||||
#: js/ui/windowManager.js:89
|
||||
msgid "Keep Changes"
|
||||
msgstr "Conserver les modifications"
|
||||
|
||||
#: js/ui/windowManager.js:105
|
||||
#: js/ui/windowManager.js:107
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2118,7 +2126,7 @@ msgstr[1] "Les paramètres seront restaurés dans %d secondes"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:660
|
||||
#: js/ui/windowManager.js:689
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2171,19 +2179,19 @@ msgstr "Déplacer vers l’espace de travail supérieur"
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Déplacer vers l’espace de travail inférieur"
|
||||
|
||||
#: js/ui/windowMenu.js:140
|
||||
#: js/ui/windowMenu.js:139
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "Déplacer vers l’écran du haut"
|
||||
|
||||
#: js/ui/windowMenu.js:149
|
||||
#: js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Déplacer vers l’écran du bas"
|
||||
|
||||
#: js/ui/windowMenu.js:158
|
||||
#: js/ui/windowMenu.js:157
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Déplacer vers l’écran de gauche"
|
||||
|
||||
#: js/ui/windowMenu.js:167
|
||||
#: js/ui/windowMenu.js:166
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Déplacer vers l’écran de droite"
|
||||
|
||||
@ -2196,29 +2204,29 @@ msgstr "Agenda d’Evolution"
|
||||
msgid "evolution"
|
||||
msgstr "evolution"
|
||||
|
||||
#: src/main.c:432
|
||||
#: src/main.c:410
|
||||
msgid "Print version"
|
||||
msgstr "Affiche la version"
|
||||
|
||||
#: src/main.c:438
|
||||
#: src/main.c:416
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Mode utilisé par GDM pour l’écran de connexion"
|
||||
|
||||
#: src/main.c:444
|
||||
#: src/main.c:422
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr ""
|
||||
"Utiliser un mode particulier, par ex. « gdm » pour l’écran de connexion"
|
||||
|
||||
#: src/main.c:450
|
||||
#: src/main.c:428
|
||||
msgid "List possible modes"
|
||||
msgstr "Lister les modes possibles"
|
||||
|
||||
#: src/shell-app.c:270
|
||||
#: src/shell-app.c:272
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:523
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Impossible de lancer « %s »"
|
||||
|
232
po/fur.po
232
po/fur.po
@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: video-subtitles master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2018-04-13 19:54+0000\n"
|
||||
"PO-Revision-Date: 2018-04-23 21:41+0200\n"
|
||||
"POT-Creation-Date: 2018-08-01 18:08+0000\n"
|
||||
"PO-Revision-Date: 2018-08-08 06:58+0200\n"
|
||||
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
|
||||
"Language-Team: Friulian <fur@li.org>\n"
|
||||
"Language: fur\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
"X-Generator: Poedit 2.0.7\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
@ -286,36 +286,36 @@ msgstr ""
|
||||
"Se vêr, nome i barcons dal spazi di lavôr curint a vegnin mostrâts intal "
|
||||
"seletôr. Se no, ducj i barcons a vegnin includûts."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:197
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Lee il barcon modâl al barcon gjenitôr"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:208
|
||||
#: data/org.gnome.shell.gschema.xml.in:216
|
||||
#: data/org.gnome.shell.gschema.xml.in:224
|
||||
#: data/org.gnome.shell.gschema.xml.in:232
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Cheste clâf e sorplante chê in org.gnome.mutter cuant che al è in esecuzion "
|
||||
"GNOME Shell."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:206
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Abilite la tasseladure sul ôr cuant che si strissine i barcons tal ôr dal "
|
||||
"visôr"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:214
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "I spazis di vore a son ministrât in maniere dinamiche"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:222
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Spazis di lavôr dome sul visôr principâl"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:230
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Tardâ il cambiament dal focus te modalitât mouse fintant che il pontadôr no "
|
||||
@ -358,20 +358,20 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Jentre"
|
||||
|
||||
#: js/gdm/loginDialog.js:315
|
||||
#: js/gdm/loginDialog.js:319
|
||||
msgid "Choose Session"
|
||||
msgstr "Selezione Session"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: js/gdm/loginDialog.js:458
|
||||
#: js/gdm/loginDialog.js:462
|
||||
msgid "Not listed?"
|
||||
msgstr "No in liste?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:887
|
||||
#: js/gdm/loginDialog.js:891
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(p.e., utent o %s)"
|
||||
@ -379,12 +379,12 @@ msgstr "(p.e., utent o %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243
|
||||
#: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
|
||||
#: js/ui/components/networkAgent.js:261
|
||||
msgid "Username: "
|
||||
msgstr "Non utent:"
|
||||
|
||||
#: js/gdm/loginDialog.js:1228
|
||||
#: js/gdm/loginDialog.js:1234
|
||||
msgid "Login Window"
|
||||
msgstr "Barcon di acès"
|
||||
|
||||
@ -397,7 +397,7 @@ msgstr "Erôr di autenticazion"
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: js/gdm/util.js:482
|
||||
#: js/gdm/util.js:485
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(o passe cul dêt)"
|
||||
|
||||
@ -638,23 +638,23 @@ msgstr "Dispès"
|
||||
msgid "All"
|
||||
msgstr "Dutis"
|
||||
|
||||
#: js/ui/appDisplay.js:1886
|
||||
#: js/ui/appDisplay.js:1890
|
||||
msgid "New Window"
|
||||
msgstr "Gnûf barcon"
|
||||
|
||||
#: js/ui/appDisplay.js:1900
|
||||
#: js/ui/appDisplay.js:1904
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Invie doprant une schede grafiche dedicade"
|
||||
|
||||
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285
|
||||
#: js/ui/appDisplay.js:1931 js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Gjave dai preferîts"
|
||||
|
||||
#: js/ui/appDisplay.js:1933
|
||||
#: js/ui/appDisplay.js:1937
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Zonte tai preferîts"
|
||||
|
||||
#: js/ui/appDisplay.js:1943
|
||||
#: js/ui/appDisplay.js:1947
|
||||
msgid "Show Details"
|
||||
msgstr "Mostre Detais"
|
||||
|
||||
@ -684,7 +684,7 @@ msgstr "Cufis"
|
||||
msgid "Headset"
|
||||
msgstr "Cufis cun microfon"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
|
||||
msgid "Microphone"
|
||||
msgstr "Microfon"
|
||||
|
||||
@ -696,7 +696,7 @@ msgstr "Cambie sfont…"
|
||||
msgid "Display Settings"
|
||||
msgstr "Impostazions visôr"
|
||||
|
||||
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264
|
||||
#: js/ui/backgroundMenu.js:22
|
||||
msgid "Settings"
|
||||
msgstr "Impostazions"
|
||||
|
||||
@ -801,35 +801,35 @@ msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Dut il dì"
|
||||
|
||||
#: js/ui/calendar.js:864
|
||||
#: js/ui/calendar.js:866
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d di %B"
|
||||
|
||||
#: js/ui/calendar.js:868
|
||||
#: js/ui/calendar.js:870
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d di %B dal %Y"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "Nissune notifiche"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "Nissun event"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1131
|
||||
msgid "Clear All"
|
||||
msgstr "Nete dut"
|
||||
|
||||
#. Translators: %s is an application name
|
||||
#: js/ui/closeDialog.js:44
|
||||
#: js/ui/closeDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "“%s” nol rispuint."
|
||||
|
||||
#: js/ui/closeDialog.js:45
|
||||
#: js/ui/closeDialog.js:48
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -837,11 +837,11 @@ msgstr ""
|
||||
"Si pues sielzi di spietâ un tic che al continui o sfuarçâ la aplicazion a "
|
||||
"jessî dal dut."
|
||||
|
||||
#: js/ui/closeDialog.js:61
|
||||
#: js/ui/closeDialog.js:64
|
||||
msgid "Force Quit"
|
||||
msgstr "Sfuarce jessude"
|
||||
|
||||
#: js/ui/closeDialog.js:64
|
||||
#: js/ui/closeDialog.js:67
|
||||
msgid "Wait"
|
||||
msgstr "Spiete"
|
||||
|
||||
@ -858,7 +858,7 @@ msgstr "Dispositîf esterni distacât"
|
||||
msgid "Open with %s"
|
||||
msgstr "Vierç cun %s"
|
||||
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
|
||||
msgid "Password:"
|
||||
msgstr "Password:"
|
||||
|
||||
@ -895,11 +895,11 @@ msgstr "Password di clâf privade:"
|
||||
msgid "Service: "
|
||||
msgstr "Servizi:"
|
||||
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "La rêt cence fîl e domande autenticazion"
|
||||
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -908,7 +908,7 @@ msgstr ""
|
||||
"Si scugne meti une password o une clâf di cifradure par jentrâ te rêt cence "
|
||||
"fîl \"%s\"."
|
||||
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Autenticazion vie fîl 802.1X"
|
||||
|
||||
@ -916,15 +916,15 @@ msgstr "Autenticazion vie fîl 802.1X"
|
||||
msgid "Network name: "
|
||||
msgstr "Non rêt:"
|
||||
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
|
||||
msgid "DSL authentication"
|
||||
msgstr "Autenticazion DSL"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
|
||||
msgid "PIN code required"
|
||||
msgstr "Si pretint un codiç PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil"
|
||||
|
||||
@ -932,17 +932,17 @@ msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil"
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Passowrd rêt mobil a bande largje"
|
||||
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
|
||||
#: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "A covente une password par tacâsi a '%s'."
|
||||
|
||||
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
|
||||
msgid "Network Manager"
|
||||
msgstr "Ministradôr di rêt"
|
||||
|
||||
@ -962,7 +962,7 @@ msgstr "Autentiche"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
|
||||
#: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
|
||||
msgid "Sorry, that didn’t work. Please try again."
|
||||
msgstr "Mi displâs, no je lade drete. Prove di gnûf."
|
||||
|
||||
@ -1294,13 +1294,13 @@ msgid "Leave On"
|
||||
msgstr "Lasse ativât"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1294
|
||||
msgid "Turn On"
|
||||
msgstr "Impie"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:154 js/ui/status/network.js:337
|
||||
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1294 js/ui/status/network.js:1409
|
||||
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
|
||||
#: js/ui/status/rfkill.js:117
|
||||
msgid "Turn Off"
|
||||
@ -1362,7 +1362,7 @@ msgstr "Viôt sorzint"
|
||||
msgid "Web Page"
|
||||
msgstr "Pagjine Web"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1495
|
||||
msgid "System Information"
|
||||
msgstr "Informazion di sisteme"
|
||||
|
||||
@ -1374,6 +1374,10 @@ msgstr "Artist no cognossût"
|
||||
msgid "Unknown title"
|
||||
msgstr "Titul no cognossût"
|
||||
|
||||
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
|
||||
msgid "Volume"
|
||||
msgstr "Volum"
|
||||
|
||||
#: js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "Anule"
|
||||
@ -1416,43 +1420,43 @@ msgstr "Assegne batidure"
|
||||
msgid "Done"
|
||||
msgstr "Fat"
|
||||
|
||||
#: js/ui/padOsd.js:740
|
||||
#: js/ui/padOsd.js:742
|
||||
msgid "Edit…"
|
||||
msgstr "Modifiche…"
|
||||
|
||||
# masculin o feminin
|
||||
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887
|
||||
#: js/ui/padOsd.js:784 js/ui/padOsd.js:889
|
||||
msgid "None"
|
||||
msgstr "Nissune"
|
||||
|
||||
#: js/ui/padOsd.js:841
|
||||
#: js/ui/padOsd.js:843
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Frache un boton par configurâ"
|
||||
|
||||
#: js/ui/padOsd.js:842
|
||||
#: js/ui/padOsd.js:844
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Frache Esc par jessî"
|
||||
|
||||
#: js/ui/padOsd.js:845
|
||||
#: js/ui/padOsd.js:847
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Frache un tast par jessî"
|
||||
|
||||
#: js/ui/panel.js:355
|
||||
#: js/ui/panel.js:356
|
||||
msgid "Quit"
|
||||
msgstr "Jes"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:411
|
||||
#: js/ui/panel.js:412
|
||||
msgid "Activities"
|
||||
msgstr "Ativitâts"
|
||||
|
||||
#: js/ui/panel.js:692
|
||||
#: js/ui/panel.js:693
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sisteme"
|
||||
|
||||
#: js/ui/panel.js:811
|
||||
#: js/ui/panel.js:816
|
||||
msgid "Top Bar"
|
||||
msgstr "Sbare parsore"
|
||||
|
||||
@ -1461,24 +1465,24 @@ msgstr "Sbare parsore"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:291
|
||||
#: js/ui/popupMenu.js:300
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:70
|
||||
#: js/ui/runDialog.js:74
|
||||
msgid "Enter a Command"
|
||||
msgstr "Scrîf un comant"
|
||||
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175
|
||||
#: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
|
||||
msgid "Close"
|
||||
msgstr "Siere"
|
||||
|
||||
# torne invie o torne tache
|
||||
#: js/ui/runDialog.js:273
|
||||
#: js/ui/runDialog.js:278
|
||||
msgid "Restart is not available on Wayland"
|
||||
msgstr "Il tornâ a tacâ nol è disponibil in Wayland"
|
||||
|
||||
#: js/ui/runDialog.js:278
|
||||
#: js/ui/runDialog.js:283
|
||||
msgid "Restarting…"
|
||||
msgstr "Daûr a tornâ a inviâ…"
|
||||
|
||||
@ -1502,7 +1506,7 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d gnove notifiche"
|
||||
msgstr[1] "%d gnovis modifichis"
|
||||
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:283
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:294
|
||||
msgid "Lock"
|
||||
msgstr "Bloche"
|
||||
|
||||
@ -1686,7 +1690,7 @@ msgid "<unknown>"
|
||||
msgstr "<no cognossût>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1310
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1323
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s distudât"
|
||||
@ -1712,7 +1716,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "%s daûr a disconeti"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1302
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1315
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "%s in conession"
|
||||
@ -1752,7 +1756,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "Impostazions bande largje mobil"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1307
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1320
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "%s disabilitât vie hardware "
|
||||
@ -1808,81 +1812,81 @@ msgstr "Nissune rêt"
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Dopre interutôr fisic par distudâ"
|
||||
|
||||
#: js/ui/status/network.js:1173
|
||||
#: js/ui/status/network.js:1186
|
||||
msgid "Select Network"
|
||||
msgstr "Selezione rêt"
|
||||
|
||||
#: js/ui/status/network.js:1179
|
||||
#: js/ui/status/network.js:1192
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Impostazions Wi-Fi"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1298
|
||||
#: js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "Hotspot %s atîf"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1313
|
||||
#: js/ui/status/network.js:1326
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s distacât"
|
||||
|
||||
#: js/ui/status/network.js:1413
|
||||
#: js/ui/status/network.js:1426
|
||||
msgid "connecting…"
|
||||
msgstr "daûr a coneti…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1416
|
||||
#: js/ui/status/network.js:1429
|
||||
msgid "authentication required"
|
||||
msgstr "autenticazion necessarie"
|
||||
|
||||
#: js/ui/status/network.js:1418
|
||||
#: js/ui/status/network.js:1431
|
||||
msgid "connection failed"
|
||||
msgstr "conession falide"
|
||||
|
||||
#: js/ui/status/network.js:1472
|
||||
#: js/ui/status/network.js:1485
|
||||
msgid "VPN Settings"
|
||||
msgstr "Impostazions VPN"
|
||||
|
||||
#: js/ui/status/network.js:1485
|
||||
#: js/ui/status/network.js:1498
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: js/ui/status/network.js:1495
|
||||
#: js/ui/status/network.js:1508
|
||||
msgid "VPN Off"
|
||||
msgstr "VPN distudât"
|
||||
|
||||
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93
|
||||
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
|
||||
msgid "Network Settings"
|
||||
msgstr "Impostazions rêt"
|
||||
|
||||
#: js/ui/status/network.js:1588
|
||||
#: js/ui/status/network.js:1601
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "%s conession cablade"
|
||||
msgstr[1] "%s conessions cabladis"
|
||||
|
||||
#: js/ui/status/network.js:1592
|
||||
#: js/ui/status/network.js:1605
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "%s conession cence fîi"
|
||||
msgstr[1] "%s conessions cence fîi"
|
||||
|
||||
#: js/ui/status/network.js:1596
|
||||
#: js/ui/status/network.js:1609
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s conession modem"
|
||||
msgstr[1] "%s conessions modem"
|
||||
|
||||
#: js/ui/status/network.js:1728
|
||||
#: js/ui/status/network.js:1741
|
||||
msgid "Connection failed"
|
||||
msgstr "Conession falide"
|
||||
|
||||
#: js/ui/status/network.js:1729
|
||||
#: js/ui/status/network.js:1742
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Ativazion de conession di rêt falide"
|
||||
|
||||
@ -1933,6 +1937,14 @@ msgstr "%d∶%02d par jessi plene (%d%%)"
|
||||
msgid "%d %%"
|
||||
msgstr "%d %%"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:46
|
||||
msgid "Screen is Being Shared"
|
||||
msgstr "Il schermi al è condividût"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:48
|
||||
msgid "Turn off"
|
||||
msgstr "Distude"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
@ -1952,28 +1964,28 @@ msgstr "Jes"
|
||||
msgid "Account Settings"
|
||||
msgstr "Impostazions account"
|
||||
|
||||
#: js/ui/status/system.js:268
|
||||
#: js/ui/status/system.js:279
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Bloc Orientament"
|
||||
|
||||
#: js/ui/status/system.js:294
|
||||
#: js/ui/status/system.js:305
|
||||
msgid "Suspend"
|
||||
msgstr "Sospindi"
|
||||
|
||||
#: js/ui/status/system.js:304
|
||||
#: js/ui/status/system.js:315
|
||||
msgid "Power Off"
|
||||
msgstr "Distude"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:294
|
||||
#: js/ui/status/thunderbolt.js:298
|
||||
msgid "Thunderbolt"
|
||||
msgstr "Thunderbolt"
|
||||
|
||||
#. we are done
|
||||
#: js/ui/status/thunderbolt.js:350
|
||||
#: js/ui/status/thunderbolt.js:354
|
||||
msgid "Unknown Thunderbolt device"
|
||||
msgstr "Dispositîf Thunderbolt no cognossût"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:351
|
||||
#: js/ui/status/thunderbolt.js:355
|
||||
msgid ""
|
||||
"New device has been detected while you were away. Please disconnect and "
|
||||
"reconnect the device to start using it."
|
||||
@ -1981,23 +1993,19 @@ msgstr ""
|
||||
"Un gnûf dispositîf al è stât rilevât intant che tu jeris vie. Par plasê "
|
||||
"disconet e torne conet il dispositîf par tacâ a doprâlu."
|
||||
|
||||
#: js/ui/status/thunderbolt.js:356
|
||||
#: js/ui/status/thunderbolt.js:360
|
||||
msgid "Thunderbolt authorization error"
|
||||
msgstr "Erôr di autorizazion di Thunderbolt"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:357
|
||||
#: js/ui/status/thunderbolt.js:361
|
||||
#, javascript-format
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Impussibil autorizâ il dispositîf Thunderbolt: %s"
|
||||
|
||||
#: js/ui/status/volume.js:128
|
||||
#: js/ui/status/volume.js:135
|
||||
msgid "Volume changed"
|
||||
msgstr "Volum modificât"
|
||||
|
||||
#: js/ui/status/volume.js:170
|
||||
msgid "Volume"
|
||||
msgstr "Volum"
|
||||
|
||||
#. Translators: this is for display mirroring i.e. cloning.
|
||||
#. * Try to keep it under around 15 characters.
|
||||
#.
|
||||
@ -2047,22 +2055,22 @@ msgstr "Cîr"
|
||||
msgid "“%s” is ready"
|
||||
msgstr "“%s” al è pront"
|
||||
|
||||
#: js/ui/windowManager.js:72
|
||||
#: js/ui/windowManager.js:74
|
||||
msgid "Do you want to keep these display settings?"
|
||||
msgstr "Vûstu tignî chestis impostazions di visôr?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: js/ui/windowManager.js:84
|
||||
#: js/ui/windowManager.js:86
|
||||
msgid "Revert Settings"
|
||||
msgstr "Ripristine impostazions"
|
||||
|
||||
#: js/ui/windowManager.js:87
|
||||
#: js/ui/windowManager.js:89
|
||||
msgid "Keep Changes"
|
||||
msgstr "Ten lis modifichis"
|
||||
|
||||
#: js/ui/windowManager.js:105
|
||||
#: js/ui/windowManager.js:107
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2073,7 +2081,7 @@ msgstr[1] ""
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:660
|
||||
#: js/ui/windowManager.js:689
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2126,19 +2134,19 @@ msgstr "Sposte tal spazi di lavôr Parsore"
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Sposte tal spazi di lavôr Disot"
|
||||
|
||||
#: js/ui/windowMenu.js:140
|
||||
#: js/ui/windowMenu.js:139
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "Sposte tal visôr parsore"
|
||||
|
||||
#: js/ui/windowMenu.js:149
|
||||
#: js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Sposte tal visôr disot"
|
||||
|
||||
#: js/ui/windowMenu.js:158
|
||||
#: js/ui/windowMenu.js:157
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Sposte tal visôr a çampe"
|
||||
|
||||
#: js/ui/windowMenu.js:167
|
||||
#: js/ui/windowMenu.js:166
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Sposte tal visôr a drete"
|
||||
|
||||
@ -2151,28 +2159,28 @@ msgstr "Calendari di Evolution"
|
||||
msgid "evolution"
|
||||
msgstr "evolution"
|
||||
|
||||
#: src/main.c:432
|
||||
#: src/main.c:410
|
||||
msgid "Print version"
|
||||
msgstr "Stampe version"
|
||||
|
||||
#: src/main.c:438
|
||||
#: src/main.c:416
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modalitât doprade da GDM pe videade di acès"
|
||||
|
||||
#: src/main.c:444
|
||||
#: src/main.c:422
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "Dopre une modalitât specifiche, par esempli “gdm” pe videade di acès"
|
||||
|
||||
#: src/main.c:450
|
||||
#: src/main.c:428
|
||||
msgid "List possible modes"
|
||||
msgstr "Liste modalitâts pussibilis"
|
||||
|
||||
#: src/shell-app.c:270
|
||||
#: src/shell-app.c:272
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "No cognossût"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:523
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "No soi rivât a eseguî '%s'"
|
||||
|
160
po/id.po
160
po/id.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2018-04-13 19:54+0000\n"
|
||||
"PO-Revision-Date: 2018-04-23 13:41+0700\n"
|
||||
"POT-Creation-Date: 2018-07-24 18:34+0000\n"
|
||||
"PO-Revision-Date: 2018-07-25 16:01+0700\n"
|
||||
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
|
||||
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
||||
"Language: id\n"
|
||||
@ -360,20 +360,20 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Masuk"
|
||||
|
||||
#: js/gdm/loginDialog.js:315
|
||||
#: js/gdm/loginDialog.js:319
|
||||
msgid "Choose Session"
|
||||
msgstr "Pilih Sesi"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: js/gdm/loginDialog.js:458
|
||||
#: js/gdm/loginDialog.js:462
|
||||
msgid "Not listed?"
|
||||
msgstr "Tak masuk daftar?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:887
|
||||
#: js/gdm/loginDialog.js:891
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(cth., pengguna dari %s)"
|
||||
@ -381,12 +381,12 @@ msgstr "(cth., pengguna dari %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243
|
||||
#: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
|
||||
#: js/ui/components/networkAgent.js:261
|
||||
msgid "Username: "
|
||||
msgstr "Nama pengguna: "
|
||||
|
||||
#: js/gdm/loginDialog.js:1228
|
||||
#: js/gdm/loginDialog.js:1234
|
||||
msgid "Login Window"
|
||||
msgstr "Jendela Log Masuk"
|
||||
|
||||
@ -399,7 +399,7 @@ msgstr "Galat otentikasi"
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: js/gdm/util.js:482
|
||||
#: js/gdm/util.js:485
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(atau gesekkan jari)"
|
||||
|
||||
@ -634,23 +634,23 @@ msgstr "Sering"
|
||||
msgid "All"
|
||||
msgstr "Semua"
|
||||
|
||||
#: js/ui/appDisplay.js:1886
|
||||
#: js/ui/appDisplay.js:1890
|
||||
msgid "New Window"
|
||||
msgstr "Jendela Baru"
|
||||
|
||||
#: js/ui/appDisplay.js:1900
|
||||
#: js/ui/appDisplay.js:1904
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
|
||||
|
||||
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285
|
||||
#: js/ui/appDisplay.js:1931 js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Hapus dari Favorit"
|
||||
|
||||
#: js/ui/appDisplay.js:1933
|
||||
#: js/ui/appDisplay.js:1937
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Tambah ke Favorit"
|
||||
|
||||
#: js/ui/appDisplay.js:1943
|
||||
#: js/ui/appDisplay.js:1947
|
||||
msgid "Show Details"
|
||||
msgstr "Tampilkan Rincian"
|
||||
|
||||
@ -797,35 +797,35 @@ msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Sepanjang Hari"
|
||||
|
||||
#: js/ui/calendar.js:864
|
||||
#: js/ui/calendar.js:866
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#: js/ui/calendar.js:868
|
||||
#: js/ui/calendar.js:870
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d %B %Y"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "Tak Ada Pemberitahuan"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "Tak Ada Kejadian"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1131
|
||||
msgid "Clear All"
|
||||
msgstr "Bersihkan Semua"
|
||||
|
||||
#. Translators: %s is an application name
|
||||
#: js/ui/closeDialog.js:44
|
||||
#: js/ui/closeDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "\"%s\" tidak merespon."
|
||||
|
||||
#: js/ui/closeDialog.js:45
|
||||
#: js/ui/closeDialog.js:48
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -833,11 +833,11 @@ msgstr ""
|
||||
"Anda dapat memilih untuk menunggu sebentar untuk melanjutkan atau memaksa "
|
||||
"aplikasi keluar."
|
||||
|
||||
#: js/ui/closeDialog.js:61
|
||||
#: js/ui/closeDialog.js:64
|
||||
msgid "Force Quit"
|
||||
msgstr "Tutup Paksa"
|
||||
|
||||
#: js/ui/closeDialog.js:64
|
||||
#: js/ui/closeDialog.js:67
|
||||
msgid "Wait"
|
||||
msgstr "Tunggu"
|
||||
|
||||
@ -854,7 +854,7 @@ msgstr "Drive eksternal terputus"
|
||||
msgid "Open with %s"
|
||||
msgstr "Buka dengan %s"
|
||||
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
|
||||
msgid "Password:"
|
||||
msgstr "Sandi:"
|
||||
|
||||
@ -891,11 +891,11 @@ msgstr "Sandi kunci privat: "
|
||||
msgid "Service: "
|
||||
msgstr "Layanan: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Otentikasi diperlukan oleh jaringan nirkabel"
|
||||
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -904,7 +904,7 @@ msgstr ""
|
||||
"Sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel \"%s"
|
||||
"\"."
|
||||
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Otentikasi 802.1X kabel"
|
||||
|
||||
@ -912,15 +912,15 @@ msgstr "Otentikasi 802.1X kabel"
|
||||
msgid "Network name: "
|
||||
msgstr "Nama jaringan: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
|
||||
msgid "DSL authentication"
|
||||
msgstr "Otentikasi DSL"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
|
||||
msgid "PIN code required"
|
||||
msgstr "Perlu kode PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Kode PIN diperlukan untuk perangkat data seluler"
|
||||
|
||||
@ -928,17 +928,17 @@ msgstr "Kode PIN diperlukan untuk perangkat data seluler"
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Sandi jaringan data seluler"
|
||||
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
|
||||
#: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Perlu suatu sandi untuk menyambung ke \"%s\"."
|
||||
|
||||
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
|
||||
msgid "Network Manager"
|
||||
msgstr "Manajer Jaringan"
|
||||
|
||||
@ -958,7 +958,7 @@ msgstr "Otentikasi"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
|
||||
#: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
|
||||
msgid "Sorry, that didn’t work. Please try again."
|
||||
msgstr "Maaf, tidak berhasil. Silakan coba lagi."
|
||||
|
||||
@ -1281,13 +1281,13 @@ msgid "Leave On"
|
||||
msgstr "Biarkan Menyala"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1294
|
||||
msgid "Turn On"
|
||||
msgstr "Nyalakan"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:154 js/ui/status/network.js:337
|
||||
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1294 js/ui/status/network.js:1409
|
||||
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
|
||||
#: js/ui/status/rfkill.js:117
|
||||
msgid "Turn Off"
|
||||
@ -1349,7 +1349,7 @@ msgstr "Tilik Sumber"
|
||||
msgid "Web Page"
|
||||
msgstr "Halaman Web"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1495
|
||||
msgid "System Information"
|
||||
msgstr "Informasi Sistem"
|
||||
|
||||
@ -1423,22 +1423,22 @@ msgstr "Tekan Esc untuk keluar"
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Tekan tombol apa saja untuk keluar"
|
||||
|
||||
#: js/ui/panel.js:355
|
||||
#: js/ui/panel.js:356
|
||||
msgid "Quit"
|
||||
msgstr "Keluar"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:411
|
||||
#: js/ui/panel.js:412
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitas"
|
||||
|
||||
#: js/ui/panel.js:692
|
||||
#: js/ui/panel.js:693
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: js/ui/panel.js:811
|
||||
#: js/ui/panel.js:816
|
||||
msgid "Top Bar"
|
||||
msgstr "Bar Atas"
|
||||
|
||||
@ -1448,7 +1448,7 @@ msgstr "Bar Atas"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:291
|
||||
#: js/ui/popupMenu.js:300
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1456,15 +1456,15 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Ketikkan Perintah"
|
||||
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:174
|
||||
msgid "Close"
|
||||
msgstr "Tutup"
|
||||
|
||||
#: js/ui/runDialog.js:273
|
||||
#: js/ui/runDialog.js:274
|
||||
msgid "Restart is not available on Wayland"
|
||||
msgstr "Memulai ulang tidak tersedia di Wayland"
|
||||
|
||||
#: js/ui/runDialog.js:278
|
||||
#: js/ui/runDialog.js:279
|
||||
msgid "Restarting…"
|
||||
msgstr "Memulai ulang..."
|
||||
|
||||
@ -1665,7 +1665,7 @@ msgid "<unknown>"
|
||||
msgstr "<tak dikenal>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1310
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1323
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s Mati"
|
||||
@ -1691,7 +1691,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "%s Memutus"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1302
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1315
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "%s Menyambung"
|
||||
@ -1731,7 +1731,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "Pengaturan Data Seluler"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1307
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1320
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "%s Perangkat Keras Dinonaktifkan"
|
||||
@ -1787,78 +1787,78 @@ msgstr "Tiada Jaringan"
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Pakai saklar perangkat keras untuk mematikan"
|
||||
|
||||
#: js/ui/status/network.js:1173
|
||||
#: js/ui/status/network.js:1186
|
||||
msgid "Select Network"
|
||||
msgstr "Pilih Jaringan"
|
||||
|
||||
#: js/ui/status/network.js:1179
|
||||
#: js/ui/status/network.js:1192
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Pengaturan Wi-Fi"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1298
|
||||
#: js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "%s Hotspot Aktif"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1313
|
||||
#: js/ui/status/network.js:1326
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s Tak Tersambung"
|
||||
|
||||
#: js/ui/status/network.js:1413
|
||||
#: js/ui/status/network.js:1426
|
||||
msgid "connecting…"
|
||||
msgstr "menghubungi..."
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1416
|
||||
#: js/ui/status/network.js:1429
|
||||
msgid "authentication required"
|
||||
msgstr "diperlukan otentikasi"
|
||||
|
||||
#: js/ui/status/network.js:1418
|
||||
#: js/ui/status/network.js:1431
|
||||
msgid "connection failed"
|
||||
msgstr "koneksi gagal"
|
||||
|
||||
#: js/ui/status/network.js:1472
|
||||
#: js/ui/status/network.js:1485
|
||||
msgid "VPN Settings"
|
||||
msgstr "Pengaturan VPN"
|
||||
|
||||
#: js/ui/status/network.js:1485
|
||||
#: js/ui/status/network.js:1498
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: js/ui/status/network.js:1495
|
||||
#: js/ui/status/network.js:1508
|
||||
msgid "VPN Off"
|
||||
msgstr "VPN Mati"
|
||||
|
||||
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93
|
||||
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
|
||||
msgid "Network Settings"
|
||||
msgstr "Pengaturan Jaringan"
|
||||
|
||||
#: js/ui/status/network.js:1588
|
||||
#: js/ui/status/network.js:1601
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "%s Koneksi Kabel"
|
||||
|
||||
#: js/ui/status/network.js:1592
|
||||
#: js/ui/status/network.js:1605
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "%s Koneksi Wi-Fi"
|
||||
|
||||
#: js/ui/status/network.js:1596
|
||||
#: js/ui/status/network.js:1609
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s Koneksi Modem"
|
||||
|
||||
#: js/ui/status/network.js:1728
|
||||
#: js/ui/status/network.js:1741
|
||||
msgid "Connection failed"
|
||||
msgstr "Koneksi gagal"
|
||||
|
||||
#: js/ui/status/network.js:1729
|
||||
#: js/ui/status/network.js:1742
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktivasi koneksi jaringan gagal"
|
||||
|
||||
@ -1909,6 +1909,14 @@ msgstr "%d:%02d Sampai Penuh (%d%%)"
|
||||
msgid "%d %%"
|
||||
msgstr "%d %%"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:45
|
||||
msgid "Screen is Being Shared"
|
||||
msgstr "Layar Sedang Dibagi"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:47
|
||||
msgid "Turn off"
|
||||
msgstr "Matikan"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
@ -1940,16 +1948,16 @@ msgstr "Suspensi"
|
||||
msgid "Power Off"
|
||||
msgstr "Matikan"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:294
|
||||
#: js/ui/status/thunderbolt.js:298
|
||||
msgid "Thunderbolt"
|
||||
msgstr "Thunderbolt"
|
||||
|
||||
#. we are done
|
||||
#: js/ui/status/thunderbolt.js:350
|
||||
#: js/ui/status/thunderbolt.js:354
|
||||
msgid "Unknown Thunderbolt device"
|
||||
msgstr "Perangkat Thunderbolt tak dikenal"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:351
|
||||
#: js/ui/status/thunderbolt.js:355
|
||||
msgid ""
|
||||
"New device has been detected while you were away. Please disconnect and "
|
||||
"reconnect the device to start using it."
|
||||
@ -1957,11 +1965,11 @@ msgstr ""
|
||||
"Perangkat baru telah terdeteksi saat Anda pergi. Harap lepaskan dan "
|
||||
"sambungkan kembali perangkat untuk mulai menggunakannya."
|
||||
|
||||
#: js/ui/status/thunderbolt.js:356
|
||||
#: js/ui/status/thunderbolt.js:360
|
||||
msgid "Thunderbolt authorization error"
|
||||
msgstr "Autorisasi Thunderbolt galat"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:357
|
||||
#: js/ui/status/thunderbolt.js:361
|
||||
#, javascript-format
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Tidak dapat mengautorisasi perangkat Thunderbolt: %s"
|
||||
@ -2046,7 +2054,7 @@ msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:660
|
||||
#: js/ui/windowManager.js:668
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2099,19 +2107,19 @@ msgstr "Pindah ke Ruang Kerja Atas"
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Pindah ke Ruang Kerja Bawah"
|
||||
|
||||
#: js/ui/windowMenu.js:140
|
||||
#: js/ui/windowMenu.js:139
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "Pindah ke Ruang Kerja Atas"
|
||||
|
||||
#: js/ui/windowMenu.js:149
|
||||
#: js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Pindah ke Ruang Kerja Bawah"
|
||||
|
||||
#: js/ui/windowMenu.js:158
|
||||
#: js/ui/windowMenu.js:157
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Pindahkan ke Monitor Kiri"
|
||||
|
||||
#: js/ui/windowMenu.js:167
|
||||
#: js/ui/windowMenu.js:166
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Pindahkan ke Monitor Kanan"
|
||||
|
||||
@ -2140,12 +2148,12 @@ msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
|
||||
msgid "List possible modes"
|
||||
msgstr "Menampilkan mode yang mungkin"
|
||||
|
||||
#: src/shell-app.c:270
|
||||
#: src/shell-app.c:272
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Tak dikenal"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:523
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Gagal meluncurkan \"%s\""
|
||||
|
315
po/ko.po
315
po/ko.po
@ -14,13 +14,14 @@
|
||||
# - VPN: 가상사설망
|
||||
# - pairing (bluetooth 관련): 페어링
|
||||
# - Wayland: 웨일랜드로 음역
|
||||
# - Night Light: 야간 모드 (gnome-control-center와 일치)
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2018-02-22 09:24+0000\n"
|
||||
"PO-Revision-Date: 2018-02-25 09:21+0900\n"
|
||||
"POT-Creation-Date: 2018-08-01 18:08+0000\n"
|
||||
"PO-Revision-Date: 2018-08-26 15:05+0900\n"
|
||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||
"Language: ko\n"
|
||||
@ -283,32 +284,32 @@ msgstr ""
|
||||
"참이면, 현재 작업 공간에 창이 있는 창만 창 전환 창에 표시합니다. 거짓이면 모"
|
||||
"든 창을 표시합니다."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:197
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "상위 창에 모달 대화창 붙이기"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:208
|
||||
#: data/org.gnome.shell.gschema.xml.in:216
|
||||
#: data/org.gnome.shell.gschema.xml.in:224
|
||||
#: data/org.gnome.shell.gschema.xml.in:232
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr "그놈 셸을 실행할 때 org.gnome.mutter의 키 대신 사용됩니다."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:206
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "화면 가장자리에 창을 놓을 때 가장자리에 맞춥니다"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:214
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "작업 공간을 동적으로 관리"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:222
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "주 모니터에서만 작업 공간 사용"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:230
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "마우스 포인터가 움직이지 않을 때까지 포커스 전환을 미루기"
|
||||
|
||||
@ -327,7 +328,7 @@ msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "%s에 대한 기본 설정 대화상자를 불러오는데 오류가 발생했습니다:"
|
||||
|
||||
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
|
||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
|
||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
|
||||
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
|
||||
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
|
||||
msgid "Cancel"
|
||||
@ -347,20 +348,20 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "로그인"
|
||||
|
||||
#: js/gdm/loginDialog.js:315
|
||||
#: js/gdm/loginDialog.js:319
|
||||
msgid "Choose Session"
|
||||
msgstr "세션 선택"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: js/gdm/loginDialog.js:458
|
||||
#: js/gdm/loginDialog.js:462
|
||||
msgid "Not listed?"
|
||||
msgstr "목록에 없습니까?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:887
|
||||
#: js/gdm/loginDialog.js:891
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(예를 들어, 사용자 또는 %s)"
|
||||
@ -368,12 +369,12 @@ msgstr "(예를 들어, 사용자 또는 %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243
|
||||
#: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
|
||||
#: js/ui/components/networkAgent.js:261
|
||||
msgid "Username: "
|
||||
msgstr "사용자 이름: "
|
||||
|
||||
#: js/gdm/loginDialog.js:1228
|
||||
#: js/gdm/loginDialog.js:1234
|
||||
msgid "Login Window"
|
||||
msgstr "로그인 창"
|
||||
|
||||
@ -386,7 +387,7 @@ msgstr "인증 오류"
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: js/gdm/util.js:482
|
||||
#: js/gdm/util.js:485
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(또는 지문을 문지르십시오)"
|
||||
|
||||
@ -621,33 +622,33 @@ msgstr "자주"
|
||||
msgid "All"
|
||||
msgstr "모두"
|
||||
|
||||
#: js/ui/appDisplay.js:1886
|
||||
#: js/ui/appDisplay.js:1890
|
||||
msgid "New Window"
|
||||
msgstr "새 창"
|
||||
|
||||
#: js/ui/appDisplay.js:1900
|
||||
#: js/ui/appDisplay.js:1904
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "지정한 그래픽 카드를 사용해 시작"
|
||||
|
||||
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285
|
||||
#: js/ui/appDisplay.js:1931 js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "즐겨찾기에서 제거"
|
||||
|
||||
#: js/ui/appDisplay.js:1933
|
||||
#: js/ui/appDisplay.js:1937
|
||||
msgid "Add to Favorites"
|
||||
msgstr "즐겨찾기에 추가"
|
||||
|
||||
# 주의: "Show ..." 형태지만 보이기로 번역하지 않는다
|
||||
#: js/ui/appDisplay.js:1943
|
||||
#: js/ui/appDisplay.js:1947
|
||||
msgid "Show Details"
|
||||
msgstr "자세히 보기"
|
||||
|
||||
#: js/ui/appFavorites.js:138
|
||||
#: js/ui/appFavorites.js:140
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s 프로그램을 즐겨찾기에 추가했습니다."
|
||||
|
||||
#: js/ui/appFavorites.js:172
|
||||
#: js/ui/appFavorites.js:174
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s 프로그램을 즐겨찾기에서 제거했습니다."
|
||||
@ -668,7 +669,7 @@ msgstr "헤드폰"
|
||||
msgid "Headset"
|
||||
msgstr "헤드셋"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
|
||||
msgid "Microphone"
|
||||
msgstr "마이크"
|
||||
|
||||
@ -680,7 +681,7 @@ msgstr "배경 바꾸기…"
|
||||
msgid "Display Settings"
|
||||
msgstr "디스플레이 설정"
|
||||
|
||||
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264
|
||||
#: js/ui/backgroundMenu.js:22
|
||||
msgid "Settings"
|
||||
msgstr "설정"
|
||||
|
||||
@ -785,46 +786,46 @@ msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "종일"
|
||||
|
||||
#: js/ui/calendar.js:864
|
||||
#: js/ui/calendar.js:866
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%B %d일 %A"
|
||||
|
||||
#: js/ui/calendar.js:868
|
||||
#: js/ui/calendar.js:870
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%Y년 %B %d일 %A"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "알림 없음"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "행사 없음"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1131
|
||||
msgid "Clear All"
|
||||
msgstr "모두 지우기"
|
||||
|
||||
#. Translators: %s is an application name
|
||||
#: js/ui/closeDialog.js:44
|
||||
#: js/ui/closeDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "“%s” 프로그램이 응답하지 않습니다."
|
||||
|
||||
#: js/ui/closeDialog.js:45
|
||||
#: js/ui/closeDialog.js:48
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr ""
|
||||
"좀 더 기다려서 계속 할 수도 있고, 강제로 프로그램을 끝낼 수도 있습니다."
|
||||
|
||||
#: js/ui/closeDialog.js:61
|
||||
#: js/ui/closeDialog.js:64
|
||||
msgid "Force Quit"
|
||||
msgstr "강제로 끝내기"
|
||||
|
||||
#: js/ui/closeDialog.js:64
|
||||
#: js/ui/closeDialog.js:67
|
||||
msgid "Wait"
|
||||
msgstr "기다리기"
|
||||
|
||||
@ -841,7 +842,7 @@ msgstr "외부 드라이브 연결 끊김"
|
||||
msgid "Open with %s"
|
||||
msgstr "%s 프로그램으로 열기"
|
||||
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
|
||||
msgid "Password:"
|
||||
msgstr "암호:"
|
||||
|
||||
@ -878,18 +879,18 @@ msgstr "개인 키 암호: "
|
||||
msgid "Service: "
|
||||
msgstr "서비스: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "무선 네트워크에서 인증이 필요합니다"
|
||||
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
msgstr "“%s” 무선 네트워크에 연결하려면 암호 또는 암호화 키가 필요합니다."
|
||||
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "유선 802.1X 인증"
|
||||
|
||||
@ -897,15 +898,15 @@ msgstr "유선 802.1X 인증"
|
||||
msgid "Network name: "
|
||||
msgstr "네트워크 이름: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
|
||||
msgid "DSL authentication"
|
||||
msgstr "인증이 필요합니다"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN 코드가 필요합니다"
|
||||
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요합니다"
|
||||
|
||||
@ -913,29 +914,29 @@ msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "휴대전화 네트워크 암호"
|
||||
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
|
||||
#: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "“%s”에 연결하려면 암호가 필요합니다."
|
||||
|
||||
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
|
||||
msgid "Network Manager"
|
||||
msgstr "네트워크 관리"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:43
|
||||
#: js/ui/components/polkitAgent.js:48
|
||||
msgid "Authentication Required"
|
||||
msgstr "인증이 필요합니다"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:71
|
||||
#: js/ui/components/polkitAgent.js:76
|
||||
msgid "Administrator"
|
||||
msgstr "관리자"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:151
|
||||
#: js/ui/components/polkitAgent.js:156
|
||||
msgid "Authenticate"
|
||||
msgstr "인증"
|
||||
|
||||
@ -943,7 +944,7 @@ msgstr "인증"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327
|
||||
#: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
|
||||
msgid "Sorry, that didn’t work. Please try again."
|
||||
msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오."
|
||||
|
||||
@ -991,7 +992,7 @@ msgstr "세계 시계 추가…"
|
||||
msgid "World Clocks"
|
||||
msgstr "세계 시계"
|
||||
|
||||
#: js/ui/dateMenu.js:225
|
||||
#: js/ui/dateMenu.js:227
|
||||
msgid "Weather"
|
||||
msgstr "날씨"
|
||||
|
||||
@ -999,7 +1000,7 @@ msgstr "날씨"
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:289
|
||||
#: js/ui/dateMenu.js:291
|
||||
#, javascript-format
|
||||
msgid "%s all day."
|
||||
msgstr "하루 종일 %s."
|
||||
@ -1008,7 +1009,7 @@ msgstr "하루 종일 %s."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:295
|
||||
#: js/ui/dateMenu.js:297
|
||||
#, javascript-format
|
||||
msgid "%s, then %s later."
|
||||
msgstr "%s, 그리고 나중에 %s."
|
||||
@ -1017,30 +1018,30 @@ msgstr "%s, 그리고 나중에 %s."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:301
|
||||
#: js/ui/dateMenu.js:303
|
||||
#, javascript-format
|
||||
msgid "%s, then %s, followed by %s later."
|
||||
msgstr "%s, 그리고 %s, 또 나중에 %s."
|
||||
|
||||
#: js/ui/dateMenu.js:312
|
||||
#: js/ui/dateMenu.js:314
|
||||
msgid "Select a location…"
|
||||
msgstr "위치를 선택하십시오…"
|
||||
|
||||
#: js/ui/dateMenu.js:315
|
||||
#: js/ui/dateMenu.js:317
|
||||
msgid "Loading…"
|
||||
msgstr "읽어들이는 중…"
|
||||
|
||||
#. Translators: %s is a temperature with unit, e.g. "23℃"
|
||||
#: js/ui/dateMenu.js:321
|
||||
#: js/ui/dateMenu.js:323
|
||||
#, javascript-format
|
||||
msgid "Feels like %s."
|
||||
msgstr "체감 온도 %s."
|
||||
|
||||
#: js/ui/dateMenu.js:324
|
||||
#: js/ui/dateMenu.js:326
|
||||
msgid "Go online for weather information"
|
||||
msgstr "날씨 정보를 온라인으로 가져옵니다"
|
||||
|
||||
#: js/ui/dateMenu.js:326
|
||||
#: js/ui/dateMenu.js:328
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "날씨 정보를 현재 사용할 수 없습니다"
|
||||
|
||||
@ -1228,7 +1229,9 @@ msgstr "느린 키 끔"
|
||||
msgid ""
|
||||
"You just held down the Shift key for 8 seconds. This is the shortcut for the "
|
||||
"Slow Keys feature, which affects the way your keyboard works."
|
||||
msgstr "Shift 키를 8초 동안 누르고 있었습니다. 느린 키 기능의 바로 가기이고, 이렇게 하면 키보드 동작이 달라집니다."
|
||||
msgstr ""
|
||||
"Shift 키를 8초 동안 누르고 있었습니다. 느린 키 기능의 바로 가기이고, 이렇게 "
|
||||
"하면 키보드 동작이 달라집니다."
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:42
|
||||
msgid "Sticky Keys Turned On"
|
||||
@ -1260,13 +1263,13 @@ msgid "Leave On"
|
||||
msgstr "계속 유지"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1294
|
||||
msgid "Turn On"
|
||||
msgstr "켜기"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:154 js/ui/status/network.js:337
|
||||
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1294 js/ui/status/network.js:1409
|
||||
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
|
||||
#: js/ui/status/rfkill.js:117
|
||||
msgid "Turn Off"
|
||||
@ -1328,7 +1331,7 @@ msgstr "소스 보기"
|
||||
msgid "Web Page"
|
||||
msgstr "웹페이지"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1495
|
||||
msgid "System Information"
|
||||
msgstr "시스템 정보"
|
||||
|
||||
@ -1340,6 +1343,11 @@ msgstr "알 수 없는 음악가"
|
||||
msgid "Unknown title"
|
||||
msgstr "알 수 없는 제목"
|
||||
|
||||
# 오디오 볼륨
|
||||
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
|
||||
msgid "Volume"
|
||||
msgstr "볼륨"
|
||||
|
||||
#: js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "실행 취소"
|
||||
@ -1382,42 +1390,42 @@ msgstr "키 누르기 지정"
|
||||
msgid "Done"
|
||||
msgstr "마침"
|
||||
|
||||
#: js/ui/padOsd.js:740
|
||||
#: js/ui/padOsd.js:742
|
||||
msgid "Edit…"
|
||||
msgstr "편집…"
|
||||
|
||||
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887
|
||||
#: js/ui/padOsd.js:784 js/ui/padOsd.js:889
|
||||
msgid "None"
|
||||
msgstr "없음"
|
||||
|
||||
#: js/ui/padOsd.js:841
|
||||
#: js/ui/padOsd.js:843
|
||||
msgid "Press a button to configure"
|
||||
msgstr "설정하려면 단추를 누르십시오"
|
||||
|
||||
#: js/ui/padOsd.js:842
|
||||
#: js/ui/padOsd.js:844
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "나가려면 Esc를 누르십시오"
|
||||
|
||||
#: js/ui/padOsd.js:845
|
||||
#: js/ui/padOsd.js:847
|
||||
msgid "Press any key to exit"
|
||||
msgstr "나가려면 아무 키나 누르십시오"
|
||||
|
||||
#: js/ui/panel.js:355
|
||||
#: js/ui/panel.js:356
|
||||
msgid "Quit"
|
||||
msgstr "끝내기"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:411
|
||||
#: js/ui/panel.js:412
|
||||
msgid "Activities"
|
||||
msgstr "현재 활동"
|
||||
|
||||
#: js/ui/panel.js:692
|
||||
#: js/ui/panel.js:693
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "시스템"
|
||||
|
||||
#: js/ui/panel.js:811
|
||||
#: js/ui/panel.js:816
|
||||
msgid "Top Bar"
|
||||
msgstr "위 막대"
|
||||
|
||||
@ -1426,23 +1434,23 @@ msgstr "위 막대"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:291
|
||||
#: js/ui/popupMenu.js:300
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:70
|
||||
#: js/ui/runDialog.js:74
|
||||
msgid "Enter a Command"
|
||||
msgstr "명령을 입력하십시오"
|
||||
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175
|
||||
#: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
|
||||
msgid "Close"
|
||||
msgstr "닫기"
|
||||
|
||||
#: js/ui/runDialog.js:273
|
||||
#: js/ui/runDialog.js:278
|
||||
msgid "Restart is not available on Wayland"
|
||||
msgstr "웨일랜드에서는 다시 시작 기능을 사용할 수 없습니다"
|
||||
|
||||
#: js/ui/runDialog.js:278
|
||||
#: js/ui/runDialog.js:283
|
||||
msgid "Restarting…"
|
||||
msgstr "다시 시작하는 중…"
|
||||
|
||||
@ -1464,7 +1472,7 @@ msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
msgstr[0] "새 알림 %d개"
|
||||
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:283
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:294
|
||||
msgid "Lock"
|
||||
msgstr "잠그기"
|
||||
|
||||
@ -1643,7 +1651,7 @@ msgid "<unknown>"
|
||||
msgstr "<알 수 없음>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1310
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1323
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s 꺼짐"
|
||||
@ -1669,7 +1677,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "%s 연결 끊는 중"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1302
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1315
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "%s 연결하는 중"
|
||||
@ -1709,7 +1717,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "휴대전화 네트워크 설정"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1307
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1320
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "%s 하드웨어 사용 않음"
|
||||
@ -1765,88 +1773,88 @@ msgstr "네트워크 없음"
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "끄려면 하드웨어 스위치를 사용하십시오"
|
||||
|
||||
#: js/ui/status/network.js:1173
|
||||
#: js/ui/status/network.js:1186
|
||||
msgid "Select Network"
|
||||
msgstr "네트워크 선택"
|
||||
|
||||
#: js/ui/status/network.js:1179
|
||||
#: js/ui/status/network.js:1192
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "와이파이 설정"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1298
|
||||
#: js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "%s 핫스팟 사용 중"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1313
|
||||
#: js/ui/status/network.js:1326
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s 연결되지 않음"
|
||||
|
||||
#: js/ui/status/network.js:1413
|
||||
#: js/ui/status/network.js:1426
|
||||
msgid "connecting…"
|
||||
msgstr "연결하는 중…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1416
|
||||
#: js/ui/status/network.js:1429
|
||||
msgid "authentication required"
|
||||
msgstr "인증 필요"
|
||||
|
||||
#: js/ui/status/network.js:1418
|
||||
#: js/ui/status/network.js:1431
|
||||
msgid "connection failed"
|
||||
msgstr "연결 실패"
|
||||
|
||||
#: js/ui/status/network.js:1472
|
||||
#: js/ui/status/network.js:1485
|
||||
msgid "VPN Settings"
|
||||
msgstr "가상사설망 설정"
|
||||
|
||||
#: js/ui/status/network.js:1485
|
||||
#: js/ui/status/network.js:1498
|
||||
msgid "VPN"
|
||||
msgstr "가상사설망"
|
||||
|
||||
#: js/ui/status/network.js:1495
|
||||
#: js/ui/status/network.js:1508
|
||||
msgid "VPN Off"
|
||||
msgstr "가상사설망 꺼짐"
|
||||
|
||||
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93
|
||||
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
|
||||
msgid "Network Settings"
|
||||
msgstr "네트워크 설정"
|
||||
|
||||
#: js/ui/status/network.js:1588
|
||||
#: js/ui/status/network.js:1601
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "%s 유선 연결"
|
||||
|
||||
#: js/ui/status/network.js:1592
|
||||
#: js/ui/status/network.js:1605
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "%s 와이파이 연결"
|
||||
|
||||
#: js/ui/status/network.js:1596
|
||||
#: js/ui/status/network.js:1609
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s 모뎀 연결"
|
||||
|
||||
#: js/ui/status/network.js:1728
|
||||
#: js/ui/status/network.js:1741
|
||||
msgid "Connection failed"
|
||||
msgstr "연결이 실패했습니다"
|
||||
|
||||
#: js/ui/status/network.js:1729
|
||||
#: js/ui/status/network.js:1742
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "네트워크 연결이 실패했습니다"
|
||||
|
||||
#: js/ui/status/nightLight.js:68
|
||||
msgid "Night Light Disabled"
|
||||
msgstr "야간 조명 사용하지 않음"
|
||||
msgstr "야간 모드 사용하지 않음"
|
||||
|
||||
#: js/ui/status/nightLight.js:69
|
||||
msgid "Night Light On"
|
||||
msgstr "야간 조명 켬"
|
||||
msgstr "야간 모드 켬"
|
||||
|
||||
#: js/ui/status/nightLight.js:70
|
||||
msgid "Resume"
|
||||
@ -1887,6 +1895,14 @@ msgstr "충전까지 %d:%02d(%d %%)"
|
||||
msgid "%d %%"
|
||||
msgstr "%d %%"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:46
|
||||
msgid "Screen is Being Shared"
|
||||
msgstr "화면을 공유하는 중입니다"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:48
|
||||
msgid "Turn off"
|
||||
msgstr "끄기"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
@ -1906,28 +1922,28 @@ msgstr "로그아웃"
|
||||
msgid "Account Settings"
|
||||
msgstr "계정 설정"
|
||||
|
||||
#: js/ui/status/system.js:268
|
||||
#: js/ui/status/system.js:279
|
||||
msgid "Orientation Lock"
|
||||
msgstr "방향 잠금"
|
||||
|
||||
#: js/ui/status/system.js:294
|
||||
#: js/ui/status/system.js:305
|
||||
msgid "Suspend"
|
||||
msgstr "절전"
|
||||
|
||||
#: js/ui/status/system.js:304
|
||||
#: js/ui/status/system.js:315
|
||||
msgid "Power Off"
|
||||
msgstr "컴퓨터 끄기"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:272
|
||||
#: js/ui/status/thunderbolt.js:298
|
||||
msgid "Thunderbolt"
|
||||
msgstr "썬더볼트"
|
||||
|
||||
#. we are done
|
||||
#: js/ui/status/thunderbolt.js:328
|
||||
#: js/ui/status/thunderbolt.js:354
|
||||
msgid "Unknown Thunderbolt device"
|
||||
msgstr "알 수 없는 썬더볼트 장치"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:329
|
||||
#: js/ui/status/thunderbolt.js:355
|
||||
msgid ""
|
||||
"New device has been detected while you were away. Please disconnect and "
|
||||
"reconnect the device to start using it."
|
||||
@ -1935,25 +1951,20 @@ msgstr ""
|
||||
"자리에 없는 동안 새 장치를 검색했습니다. 이 장치를 사용하려면 장치 연결을 끊"
|
||||
"었다가 다시 연결하십시오."
|
||||
|
||||
#: js/ui/status/thunderbolt.js:334
|
||||
#: js/ui/status/thunderbolt.js:360
|
||||
msgid "Thunderbolt authorization error"
|
||||
msgstr "썬더볼트 권한 오류"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:335
|
||||
#: js/ui/status/thunderbolt.js:361
|
||||
#, javascript-format
|
||||
msgid "Could not authorize the thunderbolt device: %s"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "썬더볼트 장치에 권한을 부여할 수 없습니다: %s"
|
||||
|
||||
# 오디오 볼륨
|
||||
#: js/ui/status/volume.js:128
|
||||
#: js/ui/status/volume.js:135
|
||||
msgid "Volume changed"
|
||||
msgstr "볼륨 바꿈"
|
||||
|
||||
# 오디오 볼륨
|
||||
#: js/ui/status/volume.js:170
|
||||
msgid "Volume"
|
||||
msgstr "볼륨"
|
||||
|
||||
#. Translators: this is for display mirroring i.e. cloning.
|
||||
#. * Try to keep it under around 15 characters.
|
||||
#.
|
||||
@ -2003,22 +2014,22 @@ msgstr "검색"
|
||||
msgid "“%s” is ready"
|
||||
msgstr "“%s” 프로그램이 준비되었습니다"
|
||||
|
||||
#: js/ui/windowManager.js:72
|
||||
#: js/ui/windowManager.js:74
|
||||
msgid "Do you want to keep these display settings?"
|
||||
msgstr "이 디스플레이 설정을 유지하시겠습니까?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: js/ui/windowManager.js:84
|
||||
#: js/ui/windowManager.js:86
|
||||
msgid "Revert Settings"
|
||||
msgstr "설정 되돌리기"
|
||||
|
||||
#: js/ui/windowManager.js:87
|
||||
#: js/ui/windowManager.js:89
|
||||
msgid "Keep Changes"
|
||||
msgstr "바뀐 사항 유지"
|
||||
|
||||
#: js/ui/windowManager.js:105
|
||||
#: js/ui/windowManager.js:107
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2026,7 +2037,7 @@ msgstr[0] "바뀐 설정을 %d초 후에 되돌립니다"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:660
|
||||
#: js/ui/windowManager.js:689
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2079,19 +2090,19 @@ msgstr "위 작업 공간으로 옮기기"
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "아래 작업 공간으로 옮기기"
|
||||
|
||||
#: js/ui/windowMenu.js:140
|
||||
#: js/ui/windowMenu.js:139
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "위 모니터로 옮기기"
|
||||
|
||||
#: js/ui/windowMenu.js:149
|
||||
#: js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "아래 모니터로 옮기기"
|
||||
|
||||
#: js/ui/windowMenu.js:158
|
||||
#: js/ui/windowMenu.js:157
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "왼쪽 모니터로 옮기기"
|
||||
|
||||
#: js/ui/windowMenu.js:167
|
||||
#: js/ui/windowMenu.js:166
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "오른쪽 모니터로 옮기기"
|
||||
|
||||
@ -2105,28 +2116,28 @@ msgid "evolution"
|
||||
msgstr "evolution"
|
||||
|
||||
# 커맨드라인 옵션 설명
|
||||
#: src/main.c:432
|
||||
#: src/main.c:410
|
||||
msgid "Print version"
|
||||
msgstr "버전을 표시합니다"
|
||||
|
||||
#: src/main.c:438
|
||||
#: src/main.c:416
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "GDM에서 로그인 화면에 사용할 모드"
|
||||
|
||||
#: src/main.c:444
|
||||
#: src/main.c:422
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "특정 모드 사용. 예를 들어 로그인 화면에 대해 “gdm”"
|
||||
|
||||
#: src/main.c:450
|
||||
#: src/main.c:428
|
||||
msgid "List possible modes"
|
||||
msgstr "가능한 모드 목록 표시"
|
||||
|
||||
#: src/shell-app.c:270
|
||||
#: src/shell-app.c:272
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "알 수 없음"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:523
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "“%s” 실행에 실패했습니다"
|
||||
@ -2162,45 +2173,3 @@ msgstr[0] "%u개 입력"
|
||||
#: subprojects/gvc/gvc-mixer-control.c:2738
|
||||
msgid "System Sounds"
|
||||
msgstr "시스템 소리"
|
||||
|
||||
#~ msgctxt "search-result"
|
||||
#~ msgid "Power off"
|
||||
#~ msgstr "컴퓨터 끄기"
|
||||
|
||||
#~ msgctxt "search-result"
|
||||
#~ msgid "Log out"
|
||||
#~ msgstr "로그아웃"
|
||||
|
||||
#~ msgctxt "search-result"
|
||||
#~ msgid "Switch user"
|
||||
#~ msgstr "사용자 바꾸기"
|
||||
|
||||
#~ msgid "Hide tray"
|
||||
#~ msgstr "트레이 숨기기"
|
||||
|
||||
#~ msgid "Status Icons"
|
||||
#~ msgstr "상태 아이콘"
|
||||
|
||||
#~ msgid "GNOME Shell Extension Preferences"
|
||||
#~ msgstr "그놈 셸 확장 기본 설정"
|
||||
|
||||
#~ msgid "Web Authentication Redirect"
|
||||
#~ msgstr "웹 인증 리다이렉트"
|
||||
|
||||
#~ msgid "Events"
|
||||
#~ msgstr "행사"
|
||||
|
||||
#~ msgid "Notifications"
|
||||
#~ msgstr "알림"
|
||||
|
||||
#~ msgid "Clear section"
|
||||
#~ msgstr "부분 지우기"
|
||||
|
||||
#~ msgid "Media"
|
||||
#~ msgstr "미디어"
|
||||
|
||||
#~ msgid "Not In Use"
|
||||
#~ msgstr "사용 중 아님"
|
||||
|
||||
#~ msgid "%d x %d"
|
||||
#~ msgstr "%d x %d"
|
||||
|
271
po/lt.po
271
po/lt.po
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2018-02-26 17:00+0000\n"
|
||||
"PO-Revision-Date: 2018-02-28 23:39+0200\n"
|
||||
"POT-Creation-Date: 2018-08-01 18:08+0000\n"
|
||||
"PO-Revision-Date: 2018-08-05 23:20+0300\n"
|
||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
||||
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
|
||||
"Language: lt\n"
|
||||
@ -290,32 +290,32 @@ msgstr ""
|
||||
"Jei teigiama, perjungimo lange rodomi tik langai iš dabartinės darbo "
|
||||
"srities. Priešingu atveju įtraukiami visi langai."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:197
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Prikabinti modalinį dialogą prie tėvinio lango"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:198
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:208
|
||||
#: data/org.gnome.shell.gschema.xml.in:216
|
||||
#: data/org.gnome.shell.gschema.xml.in:224
|
||||
#: data/org.gnome.shell.gschema.xml.in:232
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma GNOME Shell."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:206
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:214
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Darbo sritys yra tvarkomos dinamiškai"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:222
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Darbo sritys tik pagrindiniame monitoriuje"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:230
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
|
||||
|
||||
@ -334,7 +334,7 @@ msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "Kilo klaida įkeliant %s nuostatų dialogą:"
|
||||
|
||||
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
|
||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
|
||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
|
||||
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
|
||||
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
|
||||
msgid "Cancel"
|
||||
@ -354,20 +354,20 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prisijungti"
|
||||
|
||||
#: js/gdm/loginDialog.js:315
|
||||
#: js/gdm/loginDialog.js:319
|
||||
msgid "Choose Session"
|
||||
msgstr "Pasirinkite seansą"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: js/gdm/loginDialog.js:458
|
||||
#: js/gdm/loginDialog.js:462
|
||||
msgid "Not listed?"
|
||||
msgstr "Nėra sąraše?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:887
|
||||
#: js/gdm/loginDialog.js:891
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(pvz., naudotojas arba %s)"
|
||||
@ -375,12 +375,12 @@ msgstr "(pvz., naudotojas arba %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243
|
||||
#: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
|
||||
#: js/ui/components/networkAgent.js:261
|
||||
msgid "Username: "
|
||||
msgstr "Naudotojo vardas: "
|
||||
|
||||
#: js/gdm/loginDialog.js:1228
|
||||
#: js/gdm/loginDialog.js:1234
|
||||
msgid "Login Window"
|
||||
msgstr "Prisijungimo langas"
|
||||
|
||||
@ -393,7 +393,7 @@ msgstr "Tapatybės patvirtinimo klaida"
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: js/gdm/util.js:482
|
||||
#: js/gdm/util.js:485
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(arba perbraukite pirštu)"
|
||||
|
||||
@ -639,32 +639,32 @@ msgstr "Dažnai naudojamos"
|
||||
msgid "All"
|
||||
msgstr "Visos"
|
||||
|
||||
#: js/ui/appDisplay.js:1886
|
||||
#: js/ui/appDisplay.js:1890
|
||||
msgid "New Window"
|
||||
msgstr "Naujas langas"
|
||||
|
||||
#: js/ui/appDisplay.js:1900
|
||||
#: js/ui/appDisplay.js:1904
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Paleisti naudojant dedikuotą grafikos kortą"
|
||||
|
||||
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285
|
||||
#: js/ui/appDisplay.js:1931 js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Pašalinti iš mėgstamų"
|
||||
|
||||
#: js/ui/appDisplay.js:1933
|
||||
#: js/ui/appDisplay.js:1937
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Pridėti prie mėgstamų"
|
||||
|
||||
#: js/ui/appDisplay.js:1943
|
||||
#: js/ui/appDisplay.js:1947
|
||||
msgid "Show Details"
|
||||
msgstr "Rodyti detalią informaciją"
|
||||
|
||||
#: js/ui/appFavorites.js:138
|
||||
#: js/ui/appFavorites.js:140
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s pridėta prie jūsų mėgstamų."
|
||||
|
||||
#: js/ui/appFavorites.js:172
|
||||
#: js/ui/appFavorites.js:174
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s pašalinta iš jūsų mėgstamų."
|
||||
@ -685,7 +685,7 @@ msgstr "Ausinės"
|
||||
msgid "Headset"
|
||||
msgstr "Ausinės su mikrofonu"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221
|
||||
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofonas"
|
||||
|
||||
@ -697,7 +697,7 @@ msgstr "Keisti foną…"
|
||||
msgid "Display Settings"
|
||||
msgstr "Ekrano nustatymai"
|
||||
|
||||
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264
|
||||
#: js/ui/backgroundMenu.js:22
|
||||
msgid "Settings"
|
||||
msgstr "Nustatymai"
|
||||
|
||||
@ -802,35 +802,35 @@ msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Visa diena"
|
||||
|
||||
#: js/ui/calendar.js:864
|
||||
#: js/ui/calendar.js:866
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %B %d d."
|
||||
|
||||
#: js/ui/calendar.js:868
|
||||
#: js/ui/calendar.js:870
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %Y m. %B %d d."
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "Nėra pranešimų"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "Nėra įvykių"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1131
|
||||
msgid "Clear All"
|
||||
msgstr "Viską išvalyti"
|
||||
|
||||
#. Translators: %s is an application name
|
||||
#: js/ui/closeDialog.js:44
|
||||
#: js/ui/closeDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "„%s“ neatsiliepia."
|
||||
|
||||
#: js/ui/closeDialog.js:45
|
||||
#: js/ui/closeDialog.js:48
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -838,11 +838,11 @@ msgstr ""
|
||||
"Galite dar palaukti ir duoti programai laiko arba galite priverstinai "
|
||||
"išjungti programą."
|
||||
|
||||
#: js/ui/closeDialog.js:61
|
||||
#: js/ui/closeDialog.js:64
|
||||
msgid "Force Quit"
|
||||
msgstr "Priverstinai išjungti"
|
||||
|
||||
#: js/ui/closeDialog.js:64
|
||||
#: js/ui/closeDialog.js:67
|
||||
msgid "Wait"
|
||||
msgstr "Laukti"
|
||||
|
||||
@ -859,7 +859,7 @@ msgstr "Atjungta išorinė laikmena"
|
||||
msgid "Open with %s"
|
||||
msgstr "Atverti su %s"
|
||||
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284
|
||||
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
|
||||
msgid "Password:"
|
||||
msgstr "Slaptažodis:"
|
||||
|
||||
@ -896,11 +896,11 @@ msgstr "Privataus rakto slaptažodis: "
|
||||
msgid "Service: "
|
||||
msgstr "Tarnyba: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
|
||||
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę"
|
||||
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -909,7 +909,7 @@ msgstr ""
|
||||
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
|
||||
"tinklo „%s“."
|
||||
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
|
||||
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Laidinis 802.1X tapatybės patvirtinimas"
|
||||
|
||||
@ -917,15 +917,15 @@ msgstr "Laidinis 802.1X tapatybės patvirtinimas"
|
||||
msgid "Network name: "
|
||||
msgstr "Tinklo vardas: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
|
||||
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL tapatybės patvirtinimas"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
|
||||
msgid "PIN code required"
|
||||
msgstr "Reikalingas PIN kodas"
|
||||
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui"
|
||||
|
||||
@ -933,29 +933,29 @@ msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui"
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Mobiliojo plačiajuosčio tinklo slaptažodis"
|
||||
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
|
||||
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
|
||||
#: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Būtinas slaptažodis norint prisijungti prie „%s“."
|
||||
|
||||
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
|
||||
msgid "Network Manager"
|
||||
msgstr "Tinklo tvarkymas"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:43
|
||||
#: js/ui/components/polkitAgent.js:48
|
||||
msgid "Authentication Required"
|
||||
msgstr "Reikia patvirtinti tapatybę"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:71
|
||||
#: js/ui/components/polkitAgent.js:76
|
||||
msgid "Administrator"
|
||||
msgstr "Administratorius"
|
||||
|
||||
#: js/ui/components/polkitAgent.js:151
|
||||
#: js/ui/components/polkitAgent.js:156
|
||||
msgid "Authenticate"
|
||||
msgstr "Patvirtinti tapatybę"
|
||||
|
||||
@ -963,7 +963,7 @@ msgstr "Patvirtinti tapatybę"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327
|
||||
#: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
|
||||
msgid "Sorry, that didn’t work. Please try again."
|
||||
msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
|
||||
|
||||
@ -1011,7 +1011,7 @@ msgstr "Pridėti pasaulio laikrodžius…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Pasaulio laikrodžiai"
|
||||
|
||||
#: js/ui/dateMenu.js:225
|
||||
#: js/ui/dateMenu.js:227
|
||||
msgid "Weather"
|
||||
msgstr "Orai"
|
||||
|
||||
@ -1019,7 +1019,7 @@ msgstr "Orai"
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:289
|
||||
#: js/ui/dateMenu.js:291
|
||||
#, javascript-format
|
||||
msgid "%s all day."
|
||||
msgstr "%s visą dieną."
|
||||
@ -1028,7 +1028,7 @@ msgstr "%s visą dieną."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:295
|
||||
#: js/ui/dateMenu.js:297
|
||||
#, javascript-format
|
||||
msgid "%s, then %s later."
|
||||
msgstr "%s, o vėliau %s."
|
||||
@ -1037,30 +1037,30 @@ msgstr "%s, o vėliau %s."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:301
|
||||
#: js/ui/dateMenu.js:303
|
||||
#, javascript-format
|
||||
msgid "%s, then %s, followed by %s later."
|
||||
msgstr "%s, tuomet %s, o po to vėliau %s."
|
||||
|
||||
#: js/ui/dateMenu.js:312
|
||||
#: js/ui/dateMenu.js:314
|
||||
msgid "Select a location…"
|
||||
msgstr "Pasirinkite vietą…"
|
||||
|
||||
#: js/ui/dateMenu.js:315
|
||||
#: js/ui/dateMenu.js:317
|
||||
msgid "Loading…"
|
||||
msgstr "Įkeliama…"
|
||||
|
||||
#. Translators: %s is a temperature with unit, e.g. "23℃"
|
||||
#: js/ui/dateMenu.js:321
|
||||
#: js/ui/dateMenu.js:323
|
||||
#, javascript-format
|
||||
msgid "Feels like %s."
|
||||
msgstr "Jaučiama kaip %s."
|
||||
|
||||
#: js/ui/dateMenu.js:324
|
||||
#: js/ui/dateMenu.js:326
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Prisijunkite prie tinklo orų informacijai gauti"
|
||||
|
||||
#: js/ui/dateMenu.js:326
|
||||
#: js/ui/dateMenu.js:328
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Orų informacija šiuo metu yra neprieinama"
|
||||
|
||||
@ -1252,12 +1252,10 @@ msgid "Allow"
|
||||
msgstr "Leisti"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:33
|
||||
#| msgid "Slow Keys"
|
||||
msgid "Slow Keys Turned On"
|
||||
msgstr "Lėtieji klavišai įjungti"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:34
|
||||
#| msgid "Slow Keys"
|
||||
msgid "Slow Keys Turned Off"
|
||||
msgstr "Lėtieji klavišai išjungti"
|
||||
|
||||
@ -1270,12 +1268,10 @@ msgstr ""
|
||||
"trumpinus, kuris keičia klaviatūros veikseną."
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:42
|
||||
#| msgid "Sticky Keys"
|
||||
msgid "Sticky Keys Turned On"
|
||||
msgstr "Kibieji klavišai įjungti"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:43
|
||||
#| msgid "Sticky Keys"
|
||||
msgid "Sticky Keys Turned Off"
|
||||
msgstr "Kibieji klavišai išjungti"
|
||||
|
||||
@ -1302,13 +1298,13 @@ msgid "Leave On"
|
||||
msgstr "Palikti įjungtą"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1294
|
||||
msgid "Turn On"
|
||||
msgstr "Įjungti"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
|
||||
#: js/ui/status/network.js:154 js/ui/status/network.js:337
|
||||
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1294 js/ui/status/network.js:1409
|
||||
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
|
||||
#: js/ui/status/rfkill.js:117
|
||||
msgid "Turn Off"
|
||||
@ -1319,7 +1315,6 @@ msgid "Leave Off"
|
||||
msgstr "Palikti išjungtą"
|
||||
|
||||
#: js/ui/keyboard.js:198
|
||||
#| msgid "Date & Time Settings"
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Regiono ir kalbos nustatymai"
|
||||
|
||||
@ -1371,7 +1366,7 @@ msgstr "Žiūrėti šaltinį"
|
||||
msgid "Web Page"
|
||||
msgstr "Tinklalapis"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1495
|
||||
msgid "System Information"
|
||||
msgstr "Sistemos informacija"
|
||||
|
||||
@ -1383,6 +1378,10 @@ msgstr "Nežinomas atlikėjas"
|
||||
msgid "Unknown title"
|
||||
msgstr "Nežinomas pavadinimas"
|
||||
|
||||
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
|
||||
msgid "Volume"
|
||||
msgstr "Garsumas"
|
||||
|
||||
#: js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "Atšaukti"
|
||||
@ -1425,42 +1424,42 @@ msgstr "Priskirti klavišų kombinaciją"
|
||||
msgid "Done"
|
||||
msgstr "Atlikta"
|
||||
|
||||
#: js/ui/padOsd.js:740
|
||||
#: js/ui/padOsd.js:742
|
||||
msgid "Edit…"
|
||||
msgstr "Keisti…"
|
||||
|
||||
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887
|
||||
#: js/ui/padOsd.js:784 js/ui/padOsd.js:889
|
||||
msgid "None"
|
||||
msgstr "Nėra"
|
||||
|
||||
#: js/ui/padOsd.js:841
|
||||
#: js/ui/padOsd.js:843
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Spauskite mygtuką konfigūravimui"
|
||||
|
||||
#: js/ui/padOsd.js:842
|
||||
#: js/ui/padOsd.js:844
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Spauskit Esc išėjimui"
|
||||
|
||||
#: js/ui/padOsd.js:845
|
||||
#: js/ui/padOsd.js:847
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Išėjimui spauskite bet kurį klavišą"
|
||||
|
||||
#: js/ui/panel.js:355
|
||||
#: js/ui/panel.js:356
|
||||
msgid "Quit"
|
||||
msgstr "Užverti"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:411
|
||||
#: js/ui/panel.js:412
|
||||
msgid "Activities"
|
||||
msgstr "Apžvalga"
|
||||
|
||||
#: js/ui/panel.js:692
|
||||
#: js/ui/panel.js:693
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: js/ui/panel.js:811
|
||||
#: js/ui/panel.js:816
|
||||
msgid "Top Bar"
|
||||
msgstr "Viršutinė juosta"
|
||||
|
||||
@ -1469,23 +1468,23 @@ msgstr "Viršutinė juosta"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:291
|
||||
#: js/ui/popupMenu.js:300
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:70
|
||||
#: js/ui/runDialog.js:74
|
||||
msgid "Enter a Command"
|
||||
msgstr "Įveskite komandą"
|
||||
|
||||
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175
|
||||
#: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
|
||||
msgid "Close"
|
||||
msgstr "Užverti"
|
||||
|
||||
#: js/ui/runDialog.js:273
|
||||
#: js/ui/runDialog.js:278
|
||||
msgid "Restart is not available on Wayland"
|
||||
msgstr "Perleisti Wayland aplinkoje negalima"
|
||||
|
||||
#: js/ui/runDialog.js:278
|
||||
#: js/ui/runDialog.js:283
|
||||
msgid "Restarting…"
|
||||
msgstr "Perleidžiama…"
|
||||
|
||||
@ -1511,7 +1510,7 @@ msgstr[0] "%d naujas pranešimas"
|
||||
msgstr[1] "%d nauji pranešimai"
|
||||
msgstr[2] "%d naujų pranešimų"
|
||||
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:283
|
||||
#: js/ui/screenShield.js:451 js/ui/status/system.js:294
|
||||
msgid "Lock"
|
||||
msgstr "Užrakinti"
|
||||
|
||||
@ -1694,7 +1693,7 @@ msgid "<unknown>"
|
||||
msgstr "<nežinoma>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1310
|
||||
#: js/ui/status/network.js:441 js/ui/status/network.js:1323
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s išjungtas"
|
||||
@ -1720,7 +1719,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "Atsijungiama nuo %s"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1302
|
||||
#: js/ui/status/network.js:459 js/ui/status/network.js:1315
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "Jungiamasi prie %s"
|
||||
@ -1760,7 +1759,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "Mobiliojo plačiajuosčio tinklo nustatymai"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1307
|
||||
#: js/ui/status/network.js:578 js/ui/status/network.js:1320
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "%s aparatinė įranga išjungta"
|
||||
@ -1816,56 +1815,56 @@ msgstr "Nėra tinklų"
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Išjungimui naudoti aparatinį jungiklį"
|
||||
|
||||
#: js/ui/status/network.js:1173
|
||||
#: js/ui/status/network.js:1186
|
||||
msgid "Select Network"
|
||||
msgstr "Pasirinkite tinklą"
|
||||
|
||||
#: js/ui/status/network.js:1179
|
||||
#: js/ui/status/network.js:1192
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Belaidžio ryšio nustatymai"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1298
|
||||
#: js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "Prieigos taškas %s aktyvus"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1313
|
||||
#: js/ui/status/network.js:1326
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "Neprisijungta prie %s"
|
||||
|
||||
#: js/ui/status/network.js:1413
|
||||
#: js/ui/status/network.js:1426
|
||||
msgid "connecting…"
|
||||
msgstr "jungiamasi…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1416
|
||||
#: js/ui/status/network.js:1429
|
||||
msgid "authentication required"
|
||||
msgstr "reikia patvirtinti tapatybę"
|
||||
|
||||
#: js/ui/status/network.js:1418
|
||||
#: js/ui/status/network.js:1431
|
||||
msgid "connection failed"
|
||||
msgstr "nepavyko prisijungti"
|
||||
|
||||
#: js/ui/status/network.js:1472
|
||||
#: js/ui/status/network.js:1485
|
||||
msgid "VPN Settings"
|
||||
msgstr "VPN nustatymai"
|
||||
|
||||
#: js/ui/status/network.js:1485
|
||||
#: js/ui/status/network.js:1498
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: js/ui/status/network.js:1495
|
||||
#: js/ui/status/network.js:1508
|
||||
msgid "VPN Off"
|
||||
msgstr "VPN išjungtas"
|
||||
|
||||
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93
|
||||
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
|
||||
msgid "Network Settings"
|
||||
msgstr "Tinklo nustatymai"
|
||||
|
||||
#: js/ui/status/network.js:1588
|
||||
#: js/ui/status/network.js:1601
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
@ -1873,7 +1872,7 @@ msgstr[0] "%s laidinis ryšys"
|
||||
msgstr[1] "%s laidiniai ryšiai"
|
||||
msgstr[2] "%s laidinių ryšių"
|
||||
|
||||
#: js/ui/status/network.js:1592
|
||||
#: js/ui/status/network.js:1605
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
@ -1881,7 +1880,7 @@ msgstr[0] "%s belaidis ryšys"
|
||||
msgstr[1] "%s belaidžiai ryšiai"
|
||||
msgstr[2] "%s belaidžių ryšių"
|
||||
|
||||
#: js/ui/status/network.js:1596
|
||||
#: js/ui/status/network.js:1609
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
@ -1889,11 +1888,11 @@ msgstr[0] "%s modemo ryšys"
|
||||
msgstr[1] "%s modemo ryšiai"
|
||||
msgstr[2] "%s modemo ryšių"
|
||||
|
||||
#: js/ui/status/network.js:1728
|
||||
#: js/ui/status/network.js:1741
|
||||
msgid "Connection failed"
|
||||
msgstr "Nepavyko prisijungti"
|
||||
|
||||
#: js/ui/status/network.js:1729
|
||||
#: js/ui/status/network.js:1742
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Tinklo ryšio nepavyko aktyvuoti"
|
||||
|
||||
@ -1944,6 +1943,15 @@ msgstr "%d∶%02d iki pilno (%d %%)"
|
||||
msgid "%d %%"
|
||||
msgstr "%d %%"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:46
|
||||
msgid "Screen is Being Shared"
|
||||
msgstr "Ekranas yra bendrinamas"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:48
|
||||
#| msgid "Turn Off"
|
||||
msgid "Turn off"
|
||||
msgstr "Išjungti"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
@ -1963,28 +1971,28 @@ msgstr "Atsijungti"
|
||||
msgid "Account Settings"
|
||||
msgstr "Paskyros nustatymai"
|
||||
|
||||
#: js/ui/status/system.js:268
|
||||
#: js/ui/status/system.js:279
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Padėties užrakinimas"
|
||||
|
||||
#: js/ui/status/system.js:294
|
||||
#: js/ui/status/system.js:305
|
||||
msgid "Suspend"
|
||||
msgstr "Pristabdyti"
|
||||
|
||||
#: js/ui/status/system.js:304
|
||||
#: js/ui/status/system.js:315
|
||||
msgid "Power Off"
|
||||
msgstr "Išjungti"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:272
|
||||
#: js/ui/status/thunderbolt.js:298
|
||||
msgid "Thunderbolt"
|
||||
msgstr "Thunderbolt"
|
||||
|
||||
#. we are done
|
||||
#: js/ui/status/thunderbolt.js:328
|
||||
#: js/ui/status/thunderbolt.js:354
|
||||
msgid "Unknown Thunderbolt device"
|
||||
msgstr "Nežinoma Thunderbolt įrenginys"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:329
|
||||
#: js/ui/status/thunderbolt.js:355
|
||||
msgid ""
|
||||
"New device has been detected while you were away. Please disconnect and "
|
||||
"reconnect the device to start using it."
|
||||
@ -1992,23 +2000,20 @@ msgstr ""
|
||||
"Jums nesant aptiktas naujas įrenginys. Atjunkite ir vėl prijunkite įrenginį, "
|
||||
"jei norite jį naudoti."
|
||||
|
||||
#: js/ui/status/thunderbolt.js:334
|
||||
#: js/ui/status/thunderbolt.js:360
|
||||
msgid "Thunderbolt authorization error"
|
||||
msgstr "Thunderbolt autorizacijos klaida"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:335
|
||||
#: js/ui/status/thunderbolt.js:361
|
||||
#, javascript-format
|
||||
msgid "Could not authorize the thunderbolt device: %s"
|
||||
msgstr "Nepavyko autorizuoti thunderbolt įrenginio: %s"
|
||||
#| msgid "Could not authorize the thunderbolt device: %s"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Nepavyko autorizuoti Thunderbolt įrenginio: %s"
|
||||
|
||||
#: js/ui/status/volume.js:128
|
||||
#: js/ui/status/volume.js:135
|
||||
msgid "Volume changed"
|
||||
msgstr "Garsumas pakeistas"
|
||||
|
||||
#: js/ui/status/volume.js:170
|
||||
msgid "Volume"
|
||||
msgstr "Garsumas"
|
||||
|
||||
#. Translators: this is for display mirroring i.e. cloning.
|
||||
#. * Try to keep it under around 15 characters.
|
||||
#.
|
||||
@ -2058,22 +2063,22 @@ msgstr "Ieškoti"
|
||||
msgid "“%s” is ready"
|
||||
msgstr "„%s“ yra pasirengusi"
|
||||
|
||||
#: js/ui/windowManager.js:72
|
||||
#: js/ui/windowManager.js:74
|
||||
msgid "Do you want to keep these display settings?"
|
||||
msgstr "Ar norite įrašyti šiuos vaizduoklio nustatymus?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: js/ui/windowManager.js:84
|
||||
#: js/ui/windowManager.js:86
|
||||
msgid "Revert Settings"
|
||||
msgstr "Grąžinti nustatymus"
|
||||
|
||||
#: js/ui/windowManager.js:87
|
||||
#: js/ui/windowManager.js:89
|
||||
msgid "Keep Changes"
|
||||
msgstr "Įrašyti pakeitimus"
|
||||
|
||||
#: js/ui/windowManager.js:105
|
||||
#: js/ui/windowManager.js:107
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2083,7 +2088,7 @@ msgstr[2] "Pakeitimai bus grąžinti po %d sekundžių"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:660
|
||||
#: js/ui/windowManager.js:689
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2136,19 +2141,19 @@ msgstr "Perkelti į aukščiau esančią darbo sritį"
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Perkelti į žemiau esančią darbo sritį"
|
||||
|
||||
#: js/ui/windowMenu.js:140
|
||||
#: js/ui/windowMenu.js:139
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "Perkelti į aukščiau esantį monitorių"
|
||||
|
||||
#: js/ui/windowMenu.js:149
|
||||
#: js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Perkelti į žemiau esantį monitorių"
|
||||
|
||||
#: js/ui/windowMenu.js:158
|
||||
#: js/ui/windowMenu.js:157
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Perkelti į kairiau esantį monitorių"
|
||||
|
||||
#: js/ui/windowMenu.js:167
|
||||
#: js/ui/windowMenu.js:166
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Perkelti į dešiniau esantį monitorių"
|
||||
|
||||
@ -2161,28 +2166,28 @@ msgstr "Evolution kalendorius"
|
||||
msgid "evolution"
|
||||
msgstr "evolution"
|
||||
|
||||
#: src/main.c:432
|
||||
#: src/main.c:410
|
||||
msgid "Print version"
|
||||
msgstr "Išvesti versijos numerį"
|
||||
|
||||
#: src/main.c:438
|
||||
#: src/main.c:416
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
|
||||
|
||||
#: src/main.c:444
|
||||
#: src/main.c:422
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
|
||||
|
||||
#: src/main.c:450
|
||||
#: src/main.c:428
|
||||
msgid "List possible modes"
|
||||
msgstr "Išvardinti galimas veiksenas"
|
||||
|
||||
#: src/shell-app.c:270
|
||||
#: src/shell-app.c:272
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Nežinoma"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:523
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Nepavyko paleisti „%s“"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user