Import Upstream version 43.0
Daniel Ruiz de Alegría
1 year, 7 months ago
0 | 0 | include: |
1 | 1 | - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml' |
2 | 2 | - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml" |
3 | ||
4 | image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/35:2022-02-18.0 | |
5 | 3 | |
6 | 4 | stages: |
7 | 5 | - pre_review |
11 | 9 | - deploy |
12 | 10 | |
13 | 11 | default: |
12 | image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/35:2022-02-18.0 | |
14 | 13 | # Cancel jobs if newer commits are pushed to the branch |
15 | 14 | interruptible: true |
16 | 15 | # Auto-retry jobs in case of infra failures |
132 | 131 | stage: build |
133 | 132 | needs: |
134 | 133 | - build-fedora-container |
135 | before_script: | |
136 | - git submodule update --init | |
134 | variables: | |
135 | GIT_SUBMODULE_STRATEGY: normal | |
137 | 136 | script: |
138 | 137 | - meson setup build --werror -Dextension_set=all -Dclassic_mode=true |
139 | 138 | - meson compile -C build |
150 | 149 | stage: deploy |
151 | 150 | needs: |
152 | 151 | - fedora-build |
153 | before_script: | |
154 | - git submodule update --init | |
152 | variables: | |
153 | GIT_SUBMODULE_STRATEGY: normal | |
155 | 154 | script: |
156 | 155 | - meson dist -C build |
157 | 156 | rules: |
0 | 43.0 | |
1 | ==== | |
2 | ||
3 | Contributors: | |
4 | Florian Müllner | |
5 | ||
6 | Translators: | |
7 | Pawan Chitrakar [ne], Zurab Kargareteli [ka], Aleksandr Melman [ru] | |
8 | ||
9 | 43.rc | |
10 | ===== | |
11 | * Misc. bug fixes and cleanups [Florian; !240] | |
12 | ||
13 | Contributors: | |
14 | Florian Müllner | |
15 | ||
16 | 43.beta | |
17 | ======= | |
18 | * Misc. bug fixes and cleanups [Florian; !237, !238] | |
19 | ||
20 | Contributors: | |
21 | Florian Müllner | |
22 | ||
23 | Translators: | |
24 | Nart Tlisha [ab] | |
25 | ||
26 | 43.alpha | |
27 | ======== | |
28 | ||
29 | Contributors: | |
30 | Florian Müllner | |
31 | ||
32 | Translators: | |
33 | Marco Ciampa [it] | |
34 | ||
0 | 35 | 42.3 |
1 | 36 | ==== |
2 | 37 | * screenshot-window-sizer: Fix reported sizes on wayland [Florian; !232] |
5 | 5 | "enabledExtensions": [@CLASSIC_EXTENSIONS@], |
6 | 6 | "panel": { "left": ["appMenu"], |
7 | 7 | "center": [], |
8 | "right": ["a11y", "keyboard", "dateMenu", "aggregateMenu"] | |
8 | "right": ["a11y", "keyboard", "dateMenu", "quickSettings"] | |
9 | 9 | } |
10 | 10 | } |
0 | 0 | // When color definition differs for dark and light variant, |
1 | 1 | // it gets @if-ed depending on $variant |
2 | 2 | |
3 | //GNOME Color Palette | |
4 | $blue_1: #99c1f1; | |
5 | $blue_2: #62a0ea; | |
6 | $blue_3: #3584e4; | |
7 | $blue_4: #1c71d8; | |
8 | $blue_5: #1a5fb4; | |
9 | $green_1: #8ff0a4; | |
10 | $green_2: #57e389; | |
11 | $green_3: #33d17a; | |
12 | $green_4: #2ec27e; | |
13 | $green_5: #26a269; | |
14 | $yellow_1: #f9f06b; | |
15 | $yellow_2: #f8e45c; | |
16 | $yellow_3: #f6d32d; | |
17 | $yellow_4: #f5c211; | |
18 | $yellow_5: #e5a50a; | |
19 | $orange_1: #ffbe6f; | |
20 | $orange_2: #ffa348; | |
21 | $orange_3: #ff7800; | |
22 | $orange_4: #e66100; | |
23 | $orange_5: #c64600; | |
24 | $red_1: #f66151; | |
25 | $red_2: #ed333b; | |
26 | $red_3: #e01b24; | |
27 | $red_4: #c01c28; | |
28 | $red_5: #a51d2d; | |
29 | $purple_1: #dc8add; | |
30 | $purple_2: #c061cb; | |
31 | $purple_3: #9141ac; | |
32 | $purple_4: #813d9c; | |
33 | $purple_5: #613583; | |
34 | $brown_1: #cdab8f; | |
35 | $brown_2: #b5835a; | |
36 | $brown_3: #986a44; | |
37 | $brown_4: #865e3c; | |
38 | $brown_5: #63452c; | |
39 | $light_1: #ffffff; | |
40 | $light_2: #f6f5f4; | |
41 | $light_3: #deddda; | |
42 | $light_4: #c0bfbc; | |
43 | $light_5: #9a9996; | |
44 | $dark_1: #77767b; | |
45 | $dark_2: #5e5c64; | |
46 | $dark_3: #3d3846; | |
47 | $dark_4: #241f31; | |
48 | $dark_5: #000000; | |
3 | @import '_palette.scss'; | |
49 | 4 | |
5 | $is_highcontrast: "false"; | |
50 | 6 | |
51 | $base_color: if($variant == 'light', #fff, darken(desaturate(#241f31, 100%), 2%)); | |
7 | $_dark_base_color: darken(desaturate(#241f31, 100%), 2%); | |
8 | ||
9 | $base_color: if($variant == 'light', #fff, $_dark_base_color); | |
52 | 10 | $bg_color: if($variant == 'light', #f6f5f4, lighten($base_color, 5%)); |
53 | 11 | $fg_color: if($variant == 'light', transparentize(black, .2), white); |
54 | 12 | |
68 | 26 | $destructive_color: $error_color; |
69 | 27 | |
70 | 28 | $osd_fg_color: white; |
71 | $osd_bg_color: transparentize(desaturate($bg_color, 100%),0.04); | |
29 | $osd_bg_color: $_dark_base_color; //hardcoded for both light & dark | |
72 | 30 | $osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5); |
73 | 31 | $osd_insensitive_fg_color: if($variant == 'light', mix($osd_fg_color, $osd_bg_color, 80%), mix($osd_fg_color, $osd_bg_color, 70%)); |
74 | 32 | $osd_borders_color: transparentize(black, 0.3); |
75 | 33 | $osd_outer_borders_color: transparentize($osd_fg_color, 0.98); |
76 | 34 | |
77 | 35 | $shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2)); |
36 | ||
37 | // button | |
38 | $button_mix_factor: 5%; | |
39 | ||
40 | // cards | |
41 | $card_bg_color: if($variant == 'light', darken($bg_color, 5%), lighten($bg_color, 2%)); | |
42 | ||
43 | // notifications | |
44 | $bubble_buttons_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 10%)); | |
78 | 45 | |
79 | 46 | // overview background color |
80 | 47 | $system_bg_color: $base_color; |
91 | 58 | $backdrop_insensitive_color: if($variant =='light', darken($backdrop_bg_color,15%), lighten($backdrop_bg_color,15%)); |
92 | 59 | $backdrop_borders_color: mix($borders_color, $bg_color, 90%); |
93 | 60 | $backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%); |
61 | ||
62 | ||
63 | // derived checked colors | |
64 | $checked_bg_color: if($variant=='light', darken($bg_color, 7%), lighten($bg_color, 7%)); | |
65 | $checked_fg_color: if($variant=='light', darken($fg_color, 7%), lighten($fg_color, 7%)); | |
66 | ||
67 | // derived hover colors | |
68 | $hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 10%)); | |
69 | $hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 10%)); | |
70 | ||
71 | // derived active colors | |
72 | $active_bg_color: if($variant=='light', darken($bg_color, 5%), lighten($bg_color, 12%)); | |
73 | $active_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 12%)); |
34 | 34 | // radii of things that display over other things, e.g. popovers |
35 | 35 | $modal_radius: $base_border_radius*2; // 24px |
36 | 36 | |
37 | // derived hover colors | |
38 | $hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 4%)); | |
39 | $hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 4%)); | |
40 | ||
41 | // derived active colors | |
42 | $active_bg_color: if($variant=='light', darken($bg_color, 5%), lighten($bg_color, 6%)); | |
43 | $active_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 6%)); | |
44 | ||
45 | // derived checked colors | |
46 | $checked_bg_color: if($variant=='light', darken($bg_color, 7%), lighten($bg_color, 9%)); | |
47 | $checked_fg_color: if($variant=='light', darken($fg_color, 7%), lighten($fg_color, 9%)); | |
37 | // Chroma key to flag when a background-color is always occluded, not visible. | |
38 | // This allows any box-shadow behind it to be rendered more efficiently by | |
39 | // omitting the middle rectangle. | |
40 | $invisible_occluded_bg_color: rgba(3,2,1,0); | |
48 | 41 | |
49 | 42 | // fonts |
50 | 43 | $base_font_size: 11; |
85 | 78 | padding: $base_padding; |
86 | 79 | spacing: $base_padding; |
87 | 80 | border: 2px solid transparent; |
88 | transition-duration: 100ms; | |
81 | transition-duration: 200ms; | |
89 | 82 | text-align: center; |
90 | 83 | } |
91 | 84 | |
113 | 106 | &:checked { @include button(checked);} |
114 | 107 | } |
115 | 108 | |
109 | // normal icon-only button | |
110 | %icon_button { | |
111 | border-radius: 99px; | |
112 | border-style: solid; | |
113 | border-width: 1px; | |
114 | font-weight: bold; | |
115 | padding: $base_padding*2; | |
116 | ||
117 | @include button(normal); | |
118 | &:focus { @include button(focus);} | |
119 | &:hover { @include button(hover);} | |
120 | &:insensitive { @include button(insensitive);} | |
121 | &:active { @include button(active);} | |
122 | &:checked { @include button(checked);} | |
123 | ||
124 | & > StIcon { icon-size: $base_icon_size; } | |
125 | } | |
126 | ||
116 | 127 | // buttons in dialogs/notifications |
117 | 128 | // lighter in color and have a greater radius |
118 | 129 | |
119 | 130 | $bubble_button_radius:$base_border_radius*1.25; |
120 | $bubble_buttons_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 7%)); | |
121 | 131 | |
122 | 132 | %bubble_button { |
123 | 133 | padding: $base_padding * 2; |
162 | 172 | // that are undecorated by default and use OSD colors |
163 | 173 | %osd_button { |
164 | 174 | @include button(undecorated); |
165 | &:insensitive { @include button(undecorated, $c:$osd_bg_color);} | |
166 | &:focus { @include button(focus, $c:$osd_bg_color);} | |
167 | &:hover { @include button(hover, $c:$osd_bg_color);} | |
168 | &:active { @include button(active, $c:$osd_bg_color);} | |
169 | &:outlined,&:checked { @include button(checked, $c:$osd_bg_color);} | |
175 | &:insensitive { @include button(undecorated, $tc:$osd_fg_color, $c:$osd_bg_color);} | |
176 | &:focus { @include button(focus, $tc:$osd_fg_color, $c:$osd_bg_color);} | |
177 | &:hover { @include button(hover, $tc:$osd_fg_color, $c:$osd_bg_color);} | |
178 | &:active { @include button(active, $tc:$osd_fg_color, $c:$osd_bg_color);} | |
179 | &:outlined,&:checked { @include button(checked, $tc:$osd_fg_color, $c:$osd_bg_color);} | |
170 | 180 | } |
171 | 181 | |
172 | 182 | /* General Typography */ |
128 | 128 | } |
129 | 129 | } |
130 | 130 | |
131 | ||
132 | // buttons | |
133 | // since buttons are all flat an borderless now the mixin is simpler | |
134 | ||
135 | @mixin button($t, $tc:$fg_color, $c:$bg_color) { | |
136 | ||
137 | $button_bg_color: mix($tc, $c, 5%); | |
138 | 131 | // |
139 | 132 | // Button drawing function |
140 | 133 | // |
147 | 140 | // backdrop, backdrop-active, backdrop-insensitive, backdrop-insensitive-active, |
148 | 141 | // osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated |
149 | 142 | // |
143 | // since buttons are all flat an borderless now the mixin is simpler | |
144 | ||
145 | @mixin button($t, $tc:$fg_color, $c:$bg_color) { | |
146 | ||
147 | $button_bg_color: mix($tc, $c, $button_mix_factor); | |
148 | transition-duration: 100ms; | |
150 | 149 | |
151 | 150 | // normal button |
152 | 151 | @if $t==normal { |
153 | 152 | color: $tc; |
154 | 153 | background-color: $button_bg_color; |
154 | @if $is_highcontrast == "true" { | |
155 | box-shadow: inset 0 0 0 1px $button_inset_color; | |
156 | } | |
155 | 157 | } |
156 | 158 | |
157 | 159 | // focused button |
158 | 160 | @if $t==focus { |
159 | 161 | color: $tc; |
160 | 162 | background-color: mix($button_bg_color, $selected_bg_color, 90%); |
161 | box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4); | |
163 | box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4) !important; | |
162 | 164 | &:hover { |
163 | 165 | background-color: mix(lighten($button_bg_color, 3%), $selected_bg_color, 90%); |
164 | box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3); | |
166 | box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3) !important; | |
165 | 167 | } |
166 | 168 | &:active { |
167 | 169 | background-color: mix(lighten($button_bg_color, 6%), $selected_bg_color, 90%); |
168 | box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3); | |
170 | box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3) !important; | |
169 | 171 | } |
170 | 172 | } |
171 | 173 | |
173 | 175 | @else if $t==hover { |
174 | 176 | color: $tc; |
175 | 177 | background-color: lighten($button_bg_color, 3%); |
178 | ||
179 | @if $is_highcontrast == "true" { | |
180 | box-shadow: inset 0 0 0 1px lighten($button_inset_color, 3%); | |
181 | background-color: mix(lighten($button_bg_color, 3%), $button_inset_color, 10%); | |
182 | } | |
176 | 183 | } |
177 | 184 | |
178 | 185 | // active button |
179 | 186 | @else if $t==active { |
180 | 187 | color: $tc; |
181 | 188 | background-color: lighten($button_bg_color, 6%); |
189 | @if $is_highcontrast == "true" { | |
190 | box-shadow: inset 0 0 0 1px lighten($button_inset_color, 6%); | |
191 | background-color: mix(lighten($button_bg_color, 6%), $button_inset_color, 10%); | |
192 | } | |
182 | 193 | } |
183 | 194 | |
184 | 195 | // checked button |
185 | 196 | @else if $t==checked { |
186 | 197 | color: $tc; |
187 | 198 | background-color: lighten($button_bg_color, 9%); |
199 | @if $is_highcontrast == "true" { | |
200 | box-shadow: inset 0 0 0 1px lighten($button_inset_color, 9%); | |
201 | background-color: mix(lighten($button_bg_color, 9%), $button_inset_color, 10%); | |
202 | } | |
188 | 203 | &:hover { background-color: lighten($button_bg_color, 12%);} |
189 | 204 | &:active { background-color: lighten($button_bg_color, 15%);} |
190 | 205 | } |
193 | 208 | @else if $t==insensitive { |
194 | 209 | color: transparentize($tc, 0.5); |
195 | 210 | background-color: transparentize($tc, .95); |
211 | @if $is_highcontrast == "true" { | |
212 | box-shadow: inset 0 0 0 1px transparentize($button_inset_color, 0.5); | |
213 | } | |
196 | 214 | } |
197 | 215 | |
198 | 216 | // default/suggested button |
199 | 217 | @else if $t==default { |
200 | 218 | background-color: $selected_bg_color; |
201 | 219 | color: $selected_fg_color; |
220 | box-shadow: none; | |
202 | 221 | &:focus { |
203 | box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4); | |
222 | box-shadow: inset 0 0 0 2px lighten($selected_bg_color, 10%); | |
204 | 223 | } |
205 | 224 | &:hover, &:focus { |
206 | 225 | background-color: lighten($selected_bg_color, 5%); |
221 | 240 | @else if $t==undecorated { |
222 | 241 | background-color: transparent; |
223 | 242 | background-color: none; |
243 | box-shadow: none; | |
224 | 244 | &:insensitive { |
225 | 245 | @include button(insensitive); |
226 | 246 | background-color: transparent; |
257 | 277 | |
258 | 278 | // overview icon, dash, app grid |
259 | 279 | @mixin overview_icon($color, $flat: true) { |
280 | transition-duration: 400ms; | |
260 | 281 | .overview-icon { @extend %tile; } |
261 | 282 | @if $flat { |
262 | 283 | .overview-icon { background-color: transparent;} |
288 | 309 | @mixin card($flat: false) { |
289 | 310 | border-radius: $base_border_radius; |
290 | 311 | margin: $base_margin; |
291 | box-shadow: 0 1px 1px 0 rgba(0,0,0,.1); | |
312 | box-shadow: 0 1px 1px 0 $shadow_color; | |
292 | 313 | |
293 | 314 | @if $flat { |
294 | 315 | @include button(undecorated); |
295 | 316 | box-shadow: none !important; |
296 | 317 | } @else { |
297 | @include button(normal); | |
318 | @include button(normal, $c:$card_bg_color); | |
298 | 319 | } |
299 | 320 | |
300 | 321 | &:focus { |
301 | @include button(focus); | |
322 | @include button(focus, $c:$card_bg_color); | |
302 | 323 | } |
303 | 324 | |
304 | 325 | &:hover { |
305 | @include button(hover); | |
326 | @include button(hover, $c:$card_bg_color); | |
306 | 327 | } |
307 | 328 | |
308 | 329 | &:active { |
309 | @include button(active); | |
310 | } | |
311 | } | |
330 | @include button(active, $c:$card_bg_color); | |
331 | } | |
332 | } |
0 | 0 | // When color definition differs for dark and light variant, |
1 | 1 | // it gets @if ed depending on $variant |
2 | 2 | |
3 | $base_color: #222; | |
4 | $bg_color: #000; | |
5 | $fg_color: #fff; | |
3 | @import '_palette.scss'; | |
4 | ||
5 | $is_highcontrast: 'true'; | |
6 | ||
7 | $base_color: if($variant == 'light', #fff, #000); | |
8 | $bg_color: $base_color; | |
9 | $fg_color: if($variant == 'light', transparentize(black, .2), white); | |
6 | 10 | |
7 | 11 | $selected_fg_color: #ffffff; |
8 | $selected_bg_color: darken(#4a90d9,20%); | |
12 | $selected_bg_color: $blue_3; | |
13 | ||
9 | 14 | $selected_borders_color: darken($selected_bg_color, 20%); |
10 | $borders_color: darken($bg_color,12%); | |
11 | $borders_edge: transparentize($fg_color, 0.9); | |
15 | $borders_color: lighten($bg_color,17%); | |
16 | $borders_edge: $borders_color; | |
12 | 17 | $link_color: lighten($selected_bg_color,20%); |
13 | 18 | $link_visited_color: lighten($selected_bg_color,10%); |
14 | 19 | |
15 | $warning_color: #f57900; | |
16 | $error_color: #cc0000; | |
17 | $success_color: darken(#73d216,10%); | |
18 | $destructive_color: darken(#ef2929,10%); | |
20 | $warning_color: if($variant == 'light', $yellow_5, #cd9309); | |
21 | $error_color: if($variant == 'light', $red_3, $red_4); | |
22 | $success_color: if($variant == 'light', $green_4, $green_5); | |
23 | $destructive_color: $error_color; | |
19 | 24 | |
20 | $osd_fg_color: #eeeeec; | |
21 | $osd_bg_color: #2e3436; | |
22 | $osd_borders_color: rgba(0,0,0, 0.7); | |
23 | $osd_outer_borders_color: rgba(255,255,255, 0.1); | |
24 | $osd_insensitive_bg_color: mix($osd_fg_color, $osd_bg_color, 10%); | |
25 | $osd_fg_color: white; | |
26 | $osd_bg_color: $base_color; | |
27 | $osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5); | |
25 | 28 | $osd_insensitive_fg_color: if($variant == 'light', mix($osd_fg_color, $osd_bg_color, 80%), mix($osd_fg_color, $osd_bg_color, 70%)); |
29 | $osd_borders_color: $osd_bg_color; | |
30 | $osd_outer_borders_color: $osd_bg_color; | |
26 | 31 | |
27 | $shadow_color: rgba(0,0,0, 0.1); | |
28 | $system_bg_color: desaturate(#241f31,100%); //neutralize the HIG color | |
32 | $shadow_color: transparent; | |
33 | ||
34 | // button | |
35 | $button_inset_color: transparentize($fg_color, 0.8); | |
36 | $button_mix_factor: 10%; | |
37 | ||
38 | // cards | |
39 | $card_bg_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 12%)); | |
40 | ||
41 | // notifications | |
42 | $bubble_buttons_color: if($variant == 'light', darken($bg_color, 22%), lighten($bg_color, 31%)); | |
43 | ||
44 | // overview background color | |
45 | $system_bg_color: lighten($base_color, 17%); | |
29 | 46 | |
30 | 47 | //insensitive state derived colors |
31 | 48 | $insensitive_fg_color: mix($fg_color, $bg_color, 50%); |
39 | 56 | $backdrop_insensitive_color: lighten($backdrop_bg_color,15%); |
40 | 57 | $backdrop_borders_color: mix($borders_color, $bg_color, 90%); |
41 | 58 | $backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%); |
59 | ||
60 | // derived checked colors | |
61 | $checked_bg_color: if($variant=='light', darken($bg_color, 12%), lighten($bg_color, 18%)); | |
62 | $checked_fg_color: if($variant=='light', darken($fg_color, 12%), lighten($fg_color, 18%)); | |
63 | ||
64 | // derived hover colors | |
65 | $hover_bg_color: if($variant=='light', darken($bg_color, 8%), lighten($bg_color, 20%)); | |
66 | $hover_fg_color: if($variant=='light', darken($fg_color, 10%), lighten($fg_color, 20%)); | |
67 | ||
68 | // derived active colors | |
69 | $active_bg_color: if($variant=='light', darken($bg_color, 10%), lighten($bg_color, 22%)); | |
70 | $active_fg_color: if($variant=='light', darken($fg_color, 10%), lighten($fg_color, 22%)); |
0 | //GNOME Color Palette | |
1 | $blue_1: #99c1f1; | |
2 | $blue_2: #62a0ea; | |
3 | $blue_3: #3584e4; | |
4 | $blue_4: #1c71d8; | |
5 | $blue_5: #1a5fb4; | |
6 | $green_1: #8ff0a4; | |
7 | $green_2: #57e389; | |
8 | $green_3: #33d17a; | |
9 | $green_4: #2ec27e; | |
10 | $green_5: #26a269; | |
11 | $yellow_1: #f9f06b; | |
12 | $yellow_2: #f8e45c; | |
13 | $yellow_3: #f6d32d; | |
14 | $yellow_4: #f5c211; | |
15 | $yellow_5: #e5a50a; | |
16 | $orange_1: #ffbe6f; | |
17 | $orange_2: #ffa348; | |
18 | $orange_3: #ff7800; | |
19 | $orange_4: #e66100; | |
20 | $orange_5: #c64600; | |
21 | $red_1: #f66151; | |
22 | $red_2: #ed333b; | |
23 | $red_3: #e01b24; | |
24 | $red_4: #c01c28; | |
25 | $red_5: #a51d2d; | |
26 | $purple_1: #dc8add; | |
27 | $purple_2: #c061cb; | |
28 | $purple_3: #9141ac; | |
29 | $purple_4: #813d9c; | |
30 | $purple_5: #613583; | |
31 | $brown_1: #cdab8f; | |
32 | $brown_2: #b5835a; | |
33 | $brown_3: #986a44; | |
34 | $brown_4: #865e3c; | |
35 | $brown_5: #63452c; | |
36 | $light_1: #ffffff; | |
37 | $light_2: #f6f5f4; | |
38 | $light_3: #deddda; | |
39 | $light_4: #c0bfbc; | |
40 | $light_5: #9a9996; | |
41 | $dark_1: #77767b; | |
42 | $dark_2: #5e5c64; | |
43 | $dark_3: #3d3846; | |
44 | $dark_4: #241f31; | |
45 | $dark_5: #000000;⏎ |
23 | 23 | @import 'widgets/hotplug'; |
24 | 24 | // Dialogs |
25 | 25 | @import 'widgets/dialogs'; |
26 | @import 'widgets/network-dialog'; | |
27 | 26 | // OSDs |
28 | 27 | @import 'widgets/osd'; |
29 | 28 | @import 'widgets/switcher-popup'; |
32 | 31 | // Panel |
33 | 32 | @import 'widgets/panel'; |
34 | 33 | @import 'widgets/corner-ripple'; |
34 | @import 'widgets/quick-settings'; | |
35 | 35 | // Overview |
36 | 36 | @import 'widgets/overview'; |
37 | 37 | @import 'widgets/window-picker'; |
77 | 77 | |
78 | 78 | .app-folder-dialog-container { |
79 | 79 | padding: $base_padding*2; |
80 | width: 640px; | |
81 | height: 640px; | |
80 | width: 720px; | |
81 | height: 720px; | |
82 | 82 | } |
83 | 83 | |
84 | 84 | // Running app indicator (also shown in dash) |
101 | 101 | // App Grid pagination indicators |
102 | 102 | .page-indicator { |
103 | 103 | padding: $base_padding $base_padding * 2 0; |
104 | transition-duration:400ms; | |
104 | 105 | |
105 | 106 | .page-indicator-icon { |
106 | 107 | width: 10px; |
123 | 124 | } |
124 | 125 | |
125 | 126 | .page-navigation-hint { |
126 | width: 300px; | |
127 | ||
128 | 127 | &.dnd { |
129 | 128 | background: rgba(255, 255, 255, 0.1); |
130 | 129 | } |
147 | 146 | } |
148 | 147 | |
149 | 148 | .page-navigation-arrow { |
150 | margin: 6px; | |
151 | width: 24px; | |
152 | height: 24px; | |
149 | & > StIcon { | |
150 | margin: 6px; | |
151 | padding: 18px; | |
152 | width: 24px; | |
153 | height: 24px; | |
154 | border-radius: 99px; | |
155 | } | |
156 | ||
157 | &:insensitive > StIcon { @include button(undecorated, $osd_fg_color, transparentize($osd_bg_color, 0.5));} | |
158 | &:hover > StIcon { @include button(hover, $osd_fg_color, transparentize($osd_bg_color, 0.5));} | |
159 | &:active > StIcon { @include button(active, $osd_fg_color, transparentize($osd_bg_color, 0.5));} | |
153 | 160 | } |
3 | 3 | @extend %button; // that's it |
4 | 4 | min-height: 22px; |
5 | 5 | } |
6 | ||
7 | .icon-button { | |
8 | @extend %icon_button; // that's it | |
9 | } |
68 | 68 | height: $calendar_day_size !important; |
69 | 69 | width: $calendar_day_size !important; |
70 | 70 | border-radius: 99px; |
71 | transition-duration: 100ms; | |
71 | 72 | @extend %numeric; |
72 | 73 | @extend %smaller; |
73 | 74 |
2 | 2 | $ripple_size: 50px; |
3 | 3 | |
4 | 4 | .ripple-box { |
5 | background-color: lighten(transparentize($selected_bg_color, 0.7), 40%); | |
6 | box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%); | |
5 | background-color: rgba(255,255,255,0.2); | |
6 | box-shadow: 0 0 2px 2px rgba(255,255,255,0.2); | |
7 | 7 | // plus + 2px for the border (box-shadow) |
8 | 8 | width: $ripple_size + 2px; |
9 | 9 | height: $ripple_size + 2px; |
164 | 164 | height: 300px; |
165 | 165 | width: 300px; |
166 | 166 | } |
167 | ||
168 | /* Access portal dialog */ | |
169 | .access-dialog { | |
170 | text-align: center; | |
171 | }⏎ |
28 | 28 | .horizontal & { padding-left: $base_padding*2; } |
29 | 29 | } |
30 | 30 | |
31 | .candidate-page-button { padding: $base_padding;} | |
31 | .candidate-page-button { | |
32 | padding: $base_padding; | |
33 | ||
34 | & StIcon { icon-size: $base_icon_size; } | |
35 | } | |
32 | 36 | |
33 | 37 | .candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0;box-shadow: none;} |
34 | 38 | .candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px;box-shadow: none;} |
35 | .candidate-page-button-icon { icon-size: $base_icon_size; } |
60 | 60 | &:active { @include keyboard_key(active, $default_key_bg_color, $osd_fg_color);} |
61 | 61 | &:checked { @include keyboard_key(checked, $default_key_bg_color, $osd_fg_color);} |
62 | 62 | border-radius: $key_border_radius; |
63 | ||
64 | // keys that may be latched: ctrl/alt/shift | |
65 | &:latched { | |
66 | border-color: lighten($selected_bg_color, 5%); | |
67 | background-color: $selected_bg_color; | |
68 | } | |
63 | 69 | } |
64 | 70 | |
65 | 71 | // enter key is suggested-action |
129 | 135 | |
130 | 136 | // suggestions |
131 | 137 | .word-suggestions { |
132 | @include fontsize($base_font_size + 3); | |
138 | @include fontsize($base_font_size + 1); | |
133 | 139 | spacing: 12px; |
134 | min-height: 20pt; | |
140 | min-height: 17pt; | |
135 | 141 | padding: $base_padding*2; |
136 | 142 | color: $osd_fg_color; |
137 | 143 | |
140 | 146 | margin: 0 3px; |
141 | 147 | min-width: 32px; |
142 | 148 | border-radius: $base_border_radius - 2px; |
143 | padding: $base_padding $base_padding*3; | |
149 | padding: 0px $base_padding*3; | |
144 | 150 | |
145 | 151 | @include keyboard_key(undecorated, $key_bg_color, $osd_fg_color); |
146 | 152 |
15 | 15 | .modal-dialog-button-box { spacing: 3px; } |
16 | 16 | .modal-dialog-button { |
17 | 17 | padding: 4px 18px; |
18 | box-shadow: 0 1px 3px rgba(0,0,0,0.2); | |
19 | 18 | background-color: darken($system_bg_color, 3%); |
20 | 19 | border-color: darken($system_bg_color, 3%); |
21 | 20 | color: $osd_fg_color; |
27 | 26 | } |
28 | 27 | &:active { |
29 | 28 | $_active_c: darken($_gdm_bg, 5%); |
30 | box-shadow: none; | |
31 | 29 | background-color: $_active_c; |
32 | 30 | border-color: $_active_c; |
33 | 31 | } |
102 | 100 | @include fontsize($base_font_size + 2); |
103 | 101 | font-weight: bold; |
104 | 102 | padding-left: 15px; |
105 | ||
106 | 103 | &:ltr { padding-left: 14px; text-align: left; } |
107 | 104 | &:rtl { padding-right: 14px; text-align: right; } |
108 | 105 | } |
185 | 182 | .unlock-dialog { |
186 | 183 | StEntry { |
187 | 184 | border:none !important; |
188 | &:focus { | |
189 | background-color: transparentize($fg_color, 0.9); | |
185 | &:focus { | |
186 | background-color: if($variant == 'light', transparentize(white, 0.9), transparentize($fg_color, 0.9)); | |
190 | 187 | } |
191 | 188 | &:insensitive { |
192 | color: transparentize($fg_color, 0.5); | |
193 | background-color: transparentize($fg_color, 0.95); | |
189 | color: if($variant == 'light', transparentize(white, 0.5), transparentize($fg_color, 0.5)); | |
190 | background-color: if($variant == 'light', transparentize(white, 0.95), transparentize($fg_color, 0.95)); | |
194 | 191 | } |
195 | 192 | } |
196 | 193 |
8 | 8 | color: $osd_fg_color; |
9 | 9 | padding: $base_padding; |
10 | 10 | spacing: $base_padding; |
11 | box-shadow: 0 2px 4px 0 rgba(0,0,0,0.1); | |
11 | box-shadow: 0 2px 4px 0 $shadow_color; | |
12 | 12 | |
13 | 13 | & > #Toolbar { |
14 | 14 | border: none; |
78 | 78 | color: $insensitive_fg_color; |
79 | 79 | &:hover { color: lighten($insensitive_fg_color, 20%); } |
80 | 80 | &:active { color: darken($insensitive_fg_color, 20%); } |
81 | ||
82 | & StIcon { icon-size: 12px; } | |
81 | 83 | } |
82 | 84 | } |
83 | 85 |
122 | 122 | margin: 1px; |
123 | 123 | &:hover {background-color: transparentize($fg_color, 0.8);} |
124 | 124 | &:active {background-color: transparentize($fg_color, 0.9);} |
125 | ||
126 | & StIcon { icon-size: $base_icon_size; } | |
125 | 127 | } |
126 | 128 | |
127 | 129 | // body |
156 | 158 | // fix margin for last button |
157 | 159 | &:last-child:ltr { margin-right: $base_margin*3; } |
158 | 160 | &:last-child:rtl { margin-left: $base_margin*3; } |
161 | ||
162 | & StIcon { icon-size: $base_icon_size; } | |
159 | 163 | } |
160 | 164 | |
161 | 165 | // album-art |
0 | /* Select Network dialogs */ | |
1 | .nm-dialog { | |
2 | max-height: 34em; | |
3 | min-height: 31em; | |
4 | min-width: 32em; | |
5 | } | |
6 | ||
7 | .nm-dialog-content { | |
8 | spacing: 20px; | |
9 | padding: 24px; | |
10 | } | |
11 | ||
12 | .nm-dialog-header { @extend %heading; } | |
13 | .nm-dialog-subheader { color: $insensitive_fg_color;} | |
14 | .nm-dialog-header-icon { icon-size: $large_icon_size;} | |
15 | .nm-dialog-header-hbox { spacing: 10px; } | |
16 | ||
17 | .nm-dialog-scroll-view { | |
18 | padding:$base_padding; | |
19 | border-radius: $base_border_radius; | |
20 | background-color: $base_color; | |
21 | } | |
22 | ||
23 | .nm-dialog-item { | |
24 | padding: $base_padding * 2; | |
25 | ||
26 | &:selected { | |
27 | background-color: $selected_bg_color; | |
28 | border-radius: $base_border_radius - 3px; | |
29 | color: $selected_fg_color; | |
30 | } | |
31 | &:hover { background-color:$hover_bg_color;} | |
32 | } | |
33 | ||
34 | .nm-dialog-icon { icon-size: $base_icon_size; } | |
35 | .nm-dialog-icons { spacing: $base_padding * 2; } | |
36 | ||
37 | // no networks | |
38 | .no-networks-box { spacing: $base_padding; } | |
39 | .no-networks-label { color: $insensitive_fg_color; } | |
40 | ||
41 | // airplane mode | |
42 | .nm-dialog-airplane-box { | |
43 | text-align: center; | |
44 | spacing: 12px; | |
45 | } | |
46 | .nm-dialog-airplane-headline { @extend %title_3;} | |
47 | .nm-dialog-airplane-text { color: $insensitive_fg_color;} |
7 | 7 | .notification-banner { |
8 | 8 | min-height: $notification_banner_height; |
9 | 9 | width: $notification_banner_width; |
10 | box-shadow: 0 2px 4px 2px rgba(0,0,0,0.1); | |
10 | box-shadow: 0 2px 4px 2px $shadow_color; | |
11 | 11 | border-radius: $notification_banner_radius; |
12 | 12 | margin: $base_margin; |
13 | 13 |
39 | 39 | |
40 | 40 | &.screen-recording-indicator { |
41 | 41 | box-shadow: inset 0 0 0 100px $screenshot_ui_button_red; |
42 | ||
42 | } | |
43 | &.screen-sharing-indicator { | |
44 | box-shadow: inset 0 0 0 100px $warning_color; | |
45 | StBoxLayout { margin: 0 $base_padding; } | |
46 | } | |
47 | ||
48 | &.screen-recording-indicator, | |
49 | &.screen-sharing-indicator { | |
43 | 50 | StBoxLayout { |
44 | 51 | spacing: $base_padding; |
45 | 52 | } |
64 | 71 | |
65 | 72 | &.screen-recording-indicator { |
66 | 73 | box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.15); |
74 | } | |
75 | &.screen-sharing-indicator { | |
76 | box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.15); | |
67 | 77 | } |
68 | 78 | } |
69 | 79 | |
78 | 88 | |
79 | 89 | &.screen-recording-indicator { |
80 | 90 | box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.1); |
91 | } | |
92 | &.screen-sharing-indicator { | |
93 | box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.1); | |
81 | 94 | } |
82 | 95 | } |
83 | 96 | |
93 | 106 | &.screen-recording-indicator { |
94 | 107 | box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.2); |
95 | 108 | } |
109 | &.screen-sharing-indicator { | |
110 | box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.2); | |
111 | } | |
96 | 112 | } |
97 | 113 | |
98 | 114 | // status area icons |
135 | 151 | |
136 | 152 | &.screen-recording-indicator { |
137 | 153 | box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.15); |
154 | } | |
155 | &.screen-sharing-indicator { | |
156 | box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.15); | |
138 | 157 | } |
139 | 158 | } |
140 | 159 | |
149 | 168 | |
150 | 169 | &.screen-recording-indicator { |
151 | 170 | box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.1); |
171 | } | |
172 | &.screen-sharing-indicator { | |
173 | box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.1); | |
152 | 174 | } |
153 | 175 | } |
154 | 176 | |
164 | 186 | &.screen-recording-indicator { |
165 | 187 | box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.2); |
166 | 188 | } |
189 | &.screen-sharing-indicator { | |
190 | box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.2); | |
191 | } | |
167 | 192 | } |
168 | 193 | } |
169 | 194 | } |
18 | 18 | // popover content |
19 | 19 | .popup-menu-content { |
20 | 20 | padding: $base_padding; |
21 | border-radius: $modal_radius - 2px; | |
21 | border-radius: $modal_radius*1.25; | |
22 | 22 | border: 1px solid $borders_edge; |
23 | box-shadow: 0 2px 4px 0 rgba(0,0,0,0.1); | |
23 | box-shadow: 0 2px 4px 0 $shadow_color; | |
24 | 24 | background-color: $bg_color; |
25 | 25 | } |
26 | 26 | |
27 | 27 | // menu items |
28 | 28 | .popup-menu-item { |
29 | 29 | padding: $base_padding*1.5 $base_padding*2; |
30 | border-radius: $base_border_radius; | |
30 | border-radius: $base_border_radius*1.5; | |
31 | 31 | spacing: $base_padding; |
32 | transition: 0.2s all ease; | |
32 | transition-duration: 100ms; | |
33 | 33 | background-color: transparent; |
34 | 34 | |
35 | 35 | &:ltr {padding-left: $base_padding;} |
36 | 36 | &:rtl {padding-right: $base_padding;} |
37 | 37 | |
38 | 38 | &:focus, &:hover { |
39 | background-color: $hover_bg_color !important; | |
40 | &:active { background-color: $active_bg_color !important;} | |
41 | } | |
39 | background-color: $hover_bg_color !important; | |
40 | &:active { background-color: $active_bg_color !important;} | |
41 | } | |
42 | 42 | |
43 | 43 | &:checked {background-color: $checked_bg_color !important;} |
44 | 44 | |
99 | 99 | border-radius: 0 0 $base_border_radius $base_border_radius; |
100 | 100 | } |
101 | 101 | |
102 | &:focus,&:hover { background-color: lighten($hover_bg_color, 10%) !important;} | |
102 | &:focus,&:hover { background-color: $hover_bg_color !important;} | |
103 | 103 | &:checked { |
104 | background-color: lighten($checked_bg_color, 10%) !important; | |
104 | background-color: $checked_bg_color !important; | |
105 | 105 | &:focus,&:hover { background-color: lighten($checked_bg_color, 8%) !important;} |
106 | 106 | } |
107 | &:active { background-color: lighten($active_bg_color, 10%) !important;} | |
107 | &:active { background-color: $active_bg_color !important;} | |
108 | 108 | } |
109 | 109 | |
110 | 110 | .popup-menu-section { |
163 | 163 | -arrow-rise: 0px; // hide the beak on the menu |
164 | 164 | } |
165 | 165 | |
166 | // system status menu | |
167 | .aggregate-menu { | |
168 | min-width: 22em; | |
169 | ||
170 | // this is unneeded at the top-level in this menu, hide it | |
171 | .popup-menu-ornament { width: 0 !important; } | |
172 | ||
173 | // lock screen, shutdown, etc. buttons | |
174 | .popup-menu-icon { | |
175 | -st-icon-style: symbolic; | |
176 | &:ltr {margin-right: $base_margin*2;} | |
177 | &:rtl {margin-left: $base_margin*2;} | |
178 | } | |
179 | ||
180 | // account for ornaments in submenus with padding | |
181 | .popup-sub-menu .popup-menu-item > :first-child { | |
182 | // this value is hardcoded for visual effect | |
183 | &:ltr { margin-left: 1em;} | |
184 | &:rtl { margin-right: 1em;} | |
185 | } | |
186 | } | |
187 | ||
188 | 166 | // right-click (and panel) app menu |
189 | 167 | .app-menu { |
190 | 168 | max-width: 27.25em; |
0 | .quick-settings { | |
1 | padding: $base_padding*3; | |
2 | border-radius: $modal_radius*2.25; | |
3 | ||
4 | .icon-button, .button { | |
5 | padding: $base_padding*1.75; | |
6 | } | |
7 | } | |
8 | ||
9 | .quick-settings-grid { | |
10 | spacing-rows: $base_padding*2; | |
11 | spacing-columns: $base_padding*2; | |
12 | } | |
13 | ||
14 | .quick-toggle { | |
15 | border-radius: 99px; | |
16 | min-width: 12em; | |
17 | max-width: 12em; | |
18 | min-height: 40px; | |
19 | border:none; | |
20 | ||
21 | &:checked { @include button(default); } | |
22 | ||
23 | & > StBoxLayout { spacing: $base_padding; } | |
24 | ||
25 | /* Move padding into the box; this is to allow menu arrows | |
26 | to extend to the border */ | |
27 | &.button { padding: 0; } | |
28 | & > StBoxLayout { padding: 0 $base_padding*2; } | |
29 | &:ltr > StBoxLayout { padding-left: $base_padding*2.5; } | |
30 | &:rtl > StBoxLayout { padding-right: $base_padding*2.5; } | |
31 | ||
32 | .quick-toggle-label { font-weight: bold; } | |
33 | .quick-toggle-icon, .quick-toggle-arrow { icon-size: $base_icon_size; } | |
34 | } | |
35 | ||
36 | .quick-menu-toggle { | |
37 | &:ltr > StBoxLayout { padding-right: 0; } | |
38 | &:rtl > StBoxLayout { padding-left: 0; } | |
39 | ||
40 | & .quick-toggle-arrow { | |
41 | background-color: transparentize($fg_color, 0.9); | |
42 | padding: $base_padding $base_padding*1.75; | |
43 | ||
44 | &:ltr { border-radius: 0 99px 99px 0; } | |
45 | &:rtl { border-radius: 99px 0 0 99px; } | |
46 | } | |
47 | } | |
48 | ||
49 | .quick-slider { | |
50 | padding: 0 $base_padding; | |
51 | ||
52 | & > StBoxLayout { spacing: $base_padding; } | |
53 | ||
54 | .slider-bin { | |
55 | &:focus {@include button(focus);} | |
56 | min-height: 16px; // slider size | |
57 | padding: $base_padding; | |
58 | border-radius: 99px; | |
59 | } | |
60 | .quick-toggle-icon { icon-size: $base_icon_size; } | |
61 | .icon-button { background-color: transparent; } | |
62 | } | |
63 | ||
64 | .quick-toggle-menu { | |
65 | background-color: $card_bg_color; | |
66 | border-radius: $base_border_radius*3; | |
67 | padding: $base_padding*2; | |
68 | margin: $base_padding*2 $base_padding*3 0; | |
69 | ||
70 | .popup-menu-item > StIcon { -st-icon-style: symbolic; } | |
71 | ||
72 | & .header { | |
73 | spacing-rows: 0.5 * $base_padding; | |
74 | spacing-columns: $base_padding*2; | |
75 | padding-bottom: 2 * $base_padding; | |
76 | ||
77 | & .icon { | |
78 | icon-size: $base_icon_size*1.5; // a non-standard symbolic size but ok | |
79 | border-radius: 999px; | |
80 | padding: 1.5 * $base_padding; | |
81 | background-color: lighten($bg_color, 10%); | |
82 | ||
83 | &.active { background-color: $selected_bg_color; } | |
84 | } | |
85 | ||
86 | & .title { | |
87 | @extend %title_3; | |
88 | } | |
89 | ||
90 | & .subtitle { | |
91 | @extend %caption_heading; | |
92 | } | |
93 | } | |
94 | } | |
95 | ||
96 | .quick-toggle-menu-container { | |
97 | } | |
98 | ||
99 | .quick-settings-system-item { | |
100 | & > StBoxLayout { spacing: 2 * $base_padding; } | |
101 | ||
102 | .icon-button > StIcon { -st-icon-style: symbolic; } | |
103 | ||
104 | & .power-item { | |
105 | min-height: 0; | |
106 | min-width: 0; | |
107 | ||
108 | &:insensitive { | |
109 | @include button(normal); | |
110 | background-color: transparent; | |
111 | } | |
112 | } | |
113 | } | |
114 | ||
115 | .nm-network-item { | |
116 | .wireless-secure-icon { icon-size: 0.5 * $base_icon_size; } | |
117 | } |
47 | 47 | } |
48 | 48 | |
49 | 49 | .unlock-dialog-notification-label { |
50 | padding: 0 0 0 12px; | |
50 | padding-left: 12px; | |
51 | padding-right: 0; | |
52 | &:rtl { padding-right: 12px; padding-left: 0; } | |
51 | 53 | } |
52 | 54 | |
53 | 55 | .unlock-dialog-notification-count-text { |
25 | 25 | .screenshot-ui-close-button { |
26 | 26 | @extend .window-close; // copy window close button |
27 | 27 | padding: $base_padding !important; // but with more padding |
28 | &.left { margin-left: 8px;} | |
29 | &.right { margin-right: 8px;} | |
28 | margin-top: 12px; | |
29 | box-shadow: 0 2px 4px 0 $shadow_color; | |
30 | &.left { margin-left: 12px;} | |
31 | &.right { margin-right: 12px;} | |
30 | 32 | } |
31 | 33 | |
32 | 34 | .screenshot-ui-type-button { |
80 | 82 | } |
81 | 83 | |
82 | 84 | .screenshot-ui-shot-cast-container { |
83 | background-color: $hover_bg_color; | |
85 | background-color: lighten($osd_bg_color,5%); | |
84 | 86 | border-radius: $modal_radius; |
85 | 87 | padding: $screenshot_ui_shot_cast_spacing; |
86 | 88 | spacing: $screenshot_ui_shot_cast_spacing; |
92 | 94 | .screenshot-ui-shot-cast-button { |
93 | 95 | padding: $base_padding $base_padding*2; |
94 | 96 | background-color: transparent; |
95 | &:hover, &:focus { background-color: lighten($hover_bg_color, 5%);} | |
97 | &:hover, &:focus { background-color: lighten($osd_bg_color, 10%);} | |
96 | 98 | &:active { background-color: lighten($active_bg_color,5%);} |
97 | 99 | &:checked { background-color: white;color: black;} |
100 | &:insensitive { color: transparentize($osd_fg_color, 0.5);} | |
98 | 101 | |
99 | 102 | border-radius: $modal_radius - $screenshot_ui_shot_cast_spacing; |
100 | 103 |
4 | 4 | |
5 | 5 | $window_thumbnail_label_color: transparentize($osd_bg_color, 0.4); |
6 | 6 | |
7 | $window_close_button_color: darken(transparentize($osd_bg_color, .05), 3%); | |
7 | $window_close_button_color: transparentize(lighten($osd_bg_color, 7%), .02); | |
8 | 8 | $window_close_button_size: 30px; |
9 | 9 | $window_close_button_padding: 3px; |
10 | 10 | |
17 | 17 | // Window titles |
18 | 18 | .window-caption { |
19 | 19 | color: $osd_fg_color; |
20 | background-color: $osd_bg_color; | |
20 | background-color: lighten($osd_bg_color, 5%); | |
21 | 21 | border-radius: 99px; |
22 | 22 | padding: $base_padding $base_padding * 2; |
23 | 23 | } |
27 | 27 | background-color: $window_close_button_color; |
28 | 28 | color: $osd_fg_color; |
29 | 29 | border-radius: 99px; |
30 | box-shadow: 0 2px 4px 0 $shadow_color; | |
30 | 31 | padding: $window_close_button_padding; |
31 | 32 | height: $window_close_button_size; |
32 | 33 | width: $window_close_button_size; |
33 | transition-duration: 300ms; | |
34 | transition-duration: 100ms; | |
34 | 35 | |
35 | 36 | & StIcon { icon-size: 24px; } // uses non standard icon size |
36 | 37 | |
37 | 38 | &:hover { |
38 | background-color: mix($osd_fg_color, $window_close_button_color, 15%); | |
39 | background-color: lighten($window_close_button_color, 7%); | |
39 | 40 | } |
40 | 41 | |
41 | 42 | &:active { |
42 | color: transparentize($osd_fg_color, 0.2); | |
43 | background-color: darken($window_close_button_color, 5%); | |
43 | background-color: lighten($window_close_button_color, 13%); | |
44 | 44 | } |
45 | 45 | } |
46 | 46 | |
47 | 47 | .workspace-background { |
48 | 48 | // keep in sync with BACKGROUND_CORNER_RADIUS_PIXELS in workspace.js |
49 | 49 | border-radius: 30px; |
50 | background-color: $invisible_occluded_bg_color; | |
50 | 51 | box-shadow: 0 4px 16px 4px transparentize(darken($osd_bg_color, 30%), 0.7); |
51 | 52 | } |
68 | 68 | 'gnome-shell-sass/widgets/_looking-glass.scss', |
69 | 69 | 'gnome-shell-sass/widgets/_message-list.scss', |
70 | 70 | 'gnome-shell-sass/widgets/_misc.scss', |
71 | 'gnome-shell-sass/widgets/_network-dialog.scss', | |
72 | 71 | 'gnome-shell-sass/widgets/_notifications.scss', |
73 | 72 | 'gnome-shell-sass/widgets/_osd.scss', |
74 | 73 | 'gnome-shell-sass/widgets/_overview.scss', |
75 | 74 | 'gnome-shell-sass/widgets/_panel.scss', |
76 | 75 | 'gnome-shell-sass/widgets/_popovers.scss', |
76 | 'gnome-shell-sass/widgets/_quick-settings.scss', | |
77 | 77 | 'gnome-shell-sass/widgets/_screen-shield.scss', |
78 | 78 | 'gnome-shell-sass/widgets/_scrollbars.scss', |
79 | 79 | 'gnome-shell-sass/widgets/_search-entry.scss', |
3 | 3 | const { |
4 | 4 | Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St, |
5 | 5 | } = imports.gi; |
6 | const Signals = imports.signals; | |
6 | const {EventEmitter} = imports.misc.signals; | |
7 | 7 | |
8 | 8 | const DND = imports.ui.dnd; |
9 | 9 | const ExtensionUtils = imports.misc.extensionUtils; |
116 | 116 | else |
117 | 117 | name = _('Favorites'); |
118 | 118 | |
119 | this.add_child(new St.Label({ text: name })); | |
119 | this.add_child(new St.Label({text: name})); | |
120 | 120 | this.connect('motion-event', this._onMotionEvent.bind(this)); |
121 | 121 | this.connect('notify::active', this._onActiveChanged.bind(this)); |
122 | 122 | } |
238 | 238 | } |
239 | 239 | } |
240 | 240 | |
241 | class DesktopTarget { | |
241 | class DesktopTarget extends EventEmitter { | |
242 | 242 | constructor() { |
243 | super(); | |
244 | ||
243 | 245 | this._desktop = null; |
244 | 246 | this._desktopDestroyedId = 0; |
245 | 247 | |
356 | 358 | return true; |
357 | 359 | } |
358 | 360 | } |
359 | Signals.addSignalMethods(DesktopTarget.prototype); | |
360 | 361 | |
361 | 362 | class ApplicationsButton extends PanelMenu.Button { |
362 | 363 | static { |
407 | 408 | }); |
408 | 409 | }); |
409 | 410 | |
410 | this._tree = new GMenu.Tree({ menu_basename: 'applications.menu' }); | |
411 | this._tree = new GMenu.Tree({menu_basename: 'applications.menu'}); | |
411 | 412 | this._treeChangedId = this._tree.connect('changed', |
412 | 413 | this._onTreeChanged.bind(this)); |
413 | 414 | |
508 | 509 | } |
509 | 510 | let app = appSys.lookup_app(id); |
510 | 511 | if (!app) |
511 | app = new Shell.App({ app_info: entry.get_app_info() }); | |
512 | app = new Shell.App({app_info: entry.get_app_info()}); | |
512 | 513 | if (app.get_app_info().should_show()) |
513 | 514 | this.applicationsByCategory[categoryId].push(app); |
514 | 515 | } else if (nextType === GMenu.TreeItemType.SEPARATOR) { |
554 | 555 | _createLayout() { |
555 | 556 | let section = new PopupMenu.PopupMenuSection(); |
556 | 557 | this.menu.addMenuItem(section); |
557 | this.mainBox = new St.BoxLayout({ vertical: false }); | |
558 | this.leftBox = new St.BoxLayout({ vertical: true }); | |
558 | this.mainBox = new St.BoxLayout({vertical: false}); | |
559 | this.leftBox = new St.BoxLayout({vertical: true}); | |
559 | 560 | this.applicationsScrollBox = new St.ScrollView({ |
560 | 561 | style_class: 'apps-menu vfade', |
561 | 562 | x_expand: true, |
577 | 578 | vscroll.connect('scroll-stop', () => (this.menu.passEvents = false)); |
578 | 579 | this.leftBox.add_child(this.categoriesScrollBox); |
579 | 580 | |
580 | this.applicationsBox = new St.BoxLayout({ vertical: true }); | |
581 | this.applicationsBox = new St.BoxLayout({vertical: true}); | |
581 | 582 | this.applicationsScrollBox.add_actor(this.applicationsBox); |
582 | this.categoriesBox = new St.BoxLayout({ vertical: true }); | |
583 | this.categoriesBox = new St.BoxLayout({vertical: true}); | |
583 | 584 | this.categoriesScrollBox.add_actor(this.categoriesBox); |
584 | 585 | |
585 | 586 | this.mainBox.add(this.leftBox); |
1 | 1 | // Start apps on custom workspaces |
2 | 2 | /* exported init enable disable */ |
3 | 3 | |
4 | const { Shell } = imports.gi; | |
4 | const {Shell} = imports.gi; | |
5 | 5 | |
6 | 6 | const ExtensionUtils = imports.misc.extensionUtils; |
7 | 7 | const Main = imports.ui.main; |
1 | 1 | // Start apps on custom workspaces |
2 | 2 | /* exported init buildPrefsWidget */ |
3 | 3 | |
4 | const { Adw, Gio, GLib, GObject, Gtk } = imports.gi; | |
4 | const {Adw, Gio, GLib, GObject, Gtk} = imports.gi; | |
5 | 5 | |
6 | 6 | const ExtensionUtils = imports.misc.extensionUtils; |
7 | 7 | |
74 | 74 | append(appInfo) { |
75 | 75 | const pos = this.#rules.length; |
76 | 76 | |
77 | this.#rules.push(new Rule({ appInfo })); | |
77 | this.#rules.push(new Rule({appInfo})); | |
78 | 78 | this.#saveRules(); |
79 | 79 | |
80 | 80 | this.items_changed(pos, 0, 1); |
96 | 96 | if (pos < 0) |
97 | 97 | return; |
98 | 98 | |
99 | this.#rules[pos].set({ workspace }); | |
99 | this.#rules[pos].set({workspace}); | |
100 | 100 | this.#saveRules(); |
101 | 101 | } |
102 | 102 | |
115 | 115 | const [id, workspace] = stringRule.split(':'); |
116 | 116 | const appInfo = Gio.DesktopAppInfo.new(id); |
117 | 117 | if (appInfo) |
118 | this.#rules.push(new Rule({ appInfo, workspace })); | |
118 | this.#rules.push(new Rule({appInfo, workspace})); | |
119 | 119 | else |
120 | 120 | log(`Invalid ID ${id}`); |
121 | 121 | } |
153 | 153 | |
154 | 154 | this._rules = new RulesList(); |
155 | 155 | |
156 | const store = new Gio.ListStore({ item_type: Gio.ListModel }); | |
157 | const listModel = new Gtk.FlattenListModel({ model: store }); | |
156 | const store = new Gio.ListStore({item_type: Gio.ListModel}); | |
157 | const listModel = new Gtk.FlattenListModel({model: store}); | |
158 | 158 | store.append(this._rules); |
159 | 159 | store.append(new NewItemModel()); |
160 | 160 | |
247 | 247 | } |
248 | 248 | |
249 | 249 | constructor(rule) { |
250 | const { appInfo } = rule; | |
250 | const {appInfo} = rule; | |
251 | 251 | const id = appInfo.get_id(); |
252 | 252 | |
253 | 253 | super({ |
0 | 0 | /* exported init enable disable */ |
1 | 1 | // Drive menu extension |
2 | const { Clutter, Gio, GObject, Shell, St } = imports.gi; | |
2 | const {Clutter, Gio, GObject, Shell, St} = imports.gi; | |
3 | 3 | |
4 | 4 | const ExtensionUtils = imports.misc.extensionUtils; |
5 | 5 | const Main = imports.ui.main; |
0 | 0 | // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- |
1 | 1 | /* exported enable disable */ |
2 | const { Clutter } = imports.gi; | |
2 | const {Clutter} = imports.gi; | |
3 | 3 | |
4 | 4 | const ExtensionUtils = imports.misc.extensionUtils; |
5 | 5 | const Main = imports.ui.main; |
6 | const { WindowPreview } = imports.ui.windowPreview; | |
6 | const {WindowPreview} = imports.ui.windowPreview; | |
7 | 7 | const Workspace = imports.ui.workspace; |
8 | 8 | |
9 | 9 | // testing settings for natural window placement strategy: |
284 | 284 | } |
285 | 285 | |
286 | 286 | /** |
287 | * @param {Object} object - object that was modified | |
288 | * @param {Object} injection - the map of previous injections | |
287 | * @param {object} object - object that was modified | |
288 | * @param {object} injection - the map of previous injections | |
289 | 289 | * @param {string} name - the @injection key that should be removed |
290 | 290 | */ |
291 | 291 | function removeInjection(object, injection, name) { |
0 | 0 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ |
1 | 1 | /* exported init enable disable */ |
2 | 2 | |
3 | const { Clutter, GObject, St } = imports.gi; | |
3 | const {Clutter, GObject, St} = imports.gi; | |
4 | 4 | |
5 | 5 | const ExtensionUtils = imports.misc.extensionUtils; |
6 | 6 | const Main = imports.ui.main; |
0 | 0 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1 | ||
2 | const { Gio, GLib, Shell } = imports.gi; | |
3 | const Signals = imports.signals; | |
1 | /* exported PlacesManager */ | |
2 | ||
3 | const {Gio, GLib, Shell} = imports.gi; | |
4 | const {EventEmitter} = imports.misc.signals; | |
4 | 5 | |
5 | 6 | const ExtensionUtils = imports.misc.extensionUtils; |
6 | 7 | const Main = imports.ui.main; |
21 | 22 | </node>'; |
22 | 23 | const Hostname1 = Gio.DBusProxy.makeProxyWrapper(Hostname1Iface); |
23 | 24 | |
24 | class PlaceInfo { | |
25 | class PlaceInfo extends EventEmitter { | |
25 | 26 | constructor(...params) { |
27 | super(); | |
28 | ||
26 | 29 | this._init(...params); |
27 | 30 | } |
28 | 31 | |
30 | 33 | this.kind = kind; |
31 | 34 | this.file = file; |
32 | 35 | this.name = name || this._getFileName(); |
33 | this.icon = icon ? new Gio.ThemedIcon({ name: icon }) : this.getIcon(); | |
36 | this.icon = icon ? new Gio.ThemedIcon({name: icon}) : this.getIcon(); | |
34 | 37 | } |
35 | 38 | |
36 | 39 | destroy() { |
93 | 96 | // icon from the query info above |
94 | 97 | switch (this.kind) { |
95 | 98 | case 'network': |
96 | return new Gio.ThemedIcon({ name: 'folder-remote-symbolic' }); | |
99 | return new Gio.ThemedIcon({name: 'folder-remote-symbolic'}); | |
97 | 100 | case 'devices': |
98 | return new Gio.ThemedIcon({ name: 'drive-harddisk-symbolic' }); | |
101 | return new Gio.ThemedIcon({name: 'drive-harddisk-symbolic'}); | |
99 | 102 | case 'special': |
100 | 103 | case 'bookmarks': |
101 | 104 | default: |
102 | 105 | if (!this.file.is_native()) |
103 | return new Gio.ThemedIcon({ name: 'folder-remote-symbolic' }); | |
106 | return new Gio.ThemedIcon({name: 'folder-remote-symbolic'}); | |
104 | 107 | else |
105 | return new Gio.ThemedIcon({ name: 'folder-symbolic' }); | |
108 | return new Gio.ThemedIcon({name: 'folder-symbolic'}); | |
106 | 109 | } |
107 | 110 | } |
108 | 111 | |
117 | 120 | } |
118 | 121 | } |
119 | 122 | } |
120 | Signals.addSignalMethods(PlaceInfo.prototype); | |
121 | 123 | |
122 | 124 | class RootInfo extends PlaceInfo { |
123 | 125 | _init() { |
137 | 139 | } |
138 | 140 | |
139 | 141 | getIcon() { |
140 | return new Gio.ThemedIcon({ name: 'drive-harddisk-symbolic' }); | |
142 | return new Gio.ThemedIcon({name: 'drive-harddisk-symbolic'}); | |
141 | 143 | } |
142 | 144 | |
143 | 145 | _propertiesChanged(proxy) { |
245 | 247 | GLib.UserDirectory.DIRECTORY_VIDEOS, |
246 | 248 | ]; |
247 | 249 | |
248 | var PlacesManager = class { | |
250 | var PlacesManager = class extends EventEmitter { | |
249 | 251 | constructor() { |
252 | super(); | |
253 | ||
250 | 254 | this._places = { |
251 | 255 | special: [], |
252 | 256 | devices: [], |
254 | 258 | network: [], |
255 | 259 | }; |
256 | 260 | |
257 | this._settings = new Gio.Settings({ schema_id: BACKGROUND_SCHEMA }); | |
261 | this._settings = new Gio.Settings({schema_id: BACKGROUND_SCHEMA}); | |
258 | 262 | this._showDesktopIconsChangedId = this._settings.connect( |
259 | 263 | 'changed::show-desktop-icons', this._updateSpecials.bind(this)); |
260 | 264 | this._updateSpecials(); |
542 | 546 | return this._places[kind]; |
543 | 547 | } |
544 | 548 | }; |
545 | Signals.addSignalMethods(PlacesManager.prototype); |
18 | 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
19 | 19 | */ |
20 | 20 | |
21 | const { Clutter, Meta, Shell, St } = imports.gi; | |
21 | const {Clutter, Meta, Shell, St} = imports.gi; | |
22 | 22 | |
23 | 23 | const ExtensionUtils = imports.misc.extensionUtils; |
24 | 24 | const Main = imports.ui.main; |
38 | 38 | */ |
39 | 39 | function flashMessage(message) { |
40 | 40 | if (!text) { |
41 | text = new St.Label({ style_class: 'screenshot-sizer-message' }); | |
41 | text = new St.Label({style_class: 'screenshot-sizer-message'}); | |
42 | 42 | Main.uiGroup.add_actor(text); |
43 | 43 | } |
44 | 44 | |
131 | 131 | * @param {Meta.Window} window - the window whose size changed |
132 | 132 | */ |
133 | 133 | function _notifySizeChange(window) { |
134 | const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage); | |
134 | const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); | |
135 | 135 | let newOuterRect = window.get_frame_rect(); |
136 | 136 | let message = '%d×%d'.format( |
137 | 137 | newOuterRect.width / scaleFactor, |
1 | 1 | // Load shell theme from ~/.local/share/themes/name/gnome-shell |
2 | 2 | /* exported init */ |
3 | 3 | |
4 | const { Gio } = imports.gi; | |
4 | const {Gio} = imports.gi; | |
5 | 5 | |
6 | 6 | const ExtensionUtils = imports.misc.extensionUtils; |
7 | 7 | const Main = imports.ui.main; |
3 | 3 | // we use async/await here to not block the mainloop, not to parallelize |
4 | 4 | /* eslint-disable no-await-in-loop */ |
5 | 5 | |
6 | const { Adw, Gio, GLib, GObject, Gtk } = imports.gi; | |
6 | const {Adw, Gio, GLib, GObject, Gtk} = imports.gi; | |
7 | 7 | |
8 | 8 | const ExtensionUtils = imports.misc.extensionUtils; |
9 | 9 | |
20 | 20 | } |
21 | 21 | |
22 | 22 | constructor() { |
23 | super({ title: 'Themes' }); | |
23 | super({title: 'Themes'}); | |
24 | 24 | |
25 | 25 | this._actionGroup = new Gio.SimpleActionGroup(); |
26 | 26 | this.insert_action_group('theme', this._actionGroup); |
0 | 0 | /* exported getThemeDirs getModeThemeDirs */ |
1 | const { GLib } = imports.gi; | |
1 | const {GLib} = imports.gi; | |
2 | 2 | |
3 | 3 | const fn = (...args) => GLib.build_filenamev(args); |
4 | 4 |
0 | 0 | /* exported init */ |
1 | const { Clutter, Gio, GLib, GObject, Gtk, Meta, Shell, St } = imports.gi; | |
1 | const {Clutter, Gio, GLib, GObject, Gtk, Meta, Shell, St} = imports.gi; | |
2 | 2 | |
3 | 3 | const DND = imports.ui.dnd; |
4 | 4 | const ExtensionUtils = imports.misc.extensionUtils; |
7 | 7 | const PopupMenu = imports.ui.popupMenu; |
8 | 8 | |
9 | 9 | const Me = ExtensionUtils.getCurrentExtension(); |
10 | const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker; | |
11 | const { WorkspaceIndicator } = Me.imports.workspaceIndicator; | |
10 | const {WindowPicker, WindowPickerToggle} = Me.imports.windowPicker; | |
11 | const {WorkspaceIndicator} = Me.imports.workspaceIndicator; | |
12 | 12 | |
13 | 13 | const _ = ExtensionUtils.gettext; |
14 | 14 | |
119 | 119 | |
120 | 120 | this._metaWindow = metaWindow; |
121 | 121 | |
122 | this._icon = new St.Bin({ style_class: 'window-button-icon' }); | |
122 | this._icon = new St.Bin({style_class: 'window-button-icon'}); | |
123 | 123 | this.add(this._icon); |
124 | this.label_actor = new St.Label({ y_align: Clutter.ActorAlign.CENTER }); | |
124 | this.label_actor = new St.Label({y_align: Clutter.ActorAlign.CENTER}); | |
125 | 125 | this.label_actor.clutter_text.single_line_mode = true; |
126 | 126 | this.add(this.label_actor); |
127 | 127 | |
249 | 249 | if (this._longPressTimeoutId) |
250 | 250 | return; |
251 | 251 | |
252 | const { longPressDuration } = Clutter.Settings.get_default(); | |
252 | const {longPressDuration} = Clutter.Settings.get_default(); | |
253 | 253 | this._longPressTimeoutId = |
254 | 254 | GLib.timeout_add(GLib.PRIORITY_DEFAULT, longPressDuration, () => { |
255 | 255 | delete this._longPressTimeoutId; |
542 | 542 | this.app = app; |
543 | 543 | this._updateVisibility(); |
544 | 544 | |
545 | let stack = new St.Widget({ layout_manager: new Clutter.BinLayout() }); | |
545 | let stack = new St.Widget({layout_manager: new Clutter.BinLayout()}); | |
546 | 546 | this.set_child(stack); |
547 | 547 | |
548 | 548 | this._singleWindowTitle = new St.Bin({ |
741 | 741 | this._perMonitor = perMonitor; |
742 | 742 | this._monitor = monitor; |
743 | 743 | |
744 | let box = new St.BoxLayout({ x_expand: true, y_expand: true }); | |
744 | let box = new St.BoxLayout({x_expand: true, y_expand: true}); | |
745 | 745 | this.add_actor(box); |
746 | 746 | |
747 | 747 | let toggle = new WindowPickerToggle(); |
750 | 750 | toggle.connect('notify::checked', |
751 | 751 | this._updateWindowListVisibility.bind(this)); |
752 | 752 | |
753 | let layout = new Clutter.BoxLayout({ homogeneous: true }); | |
753 | let layout = new Clutter.BoxLayout({homogeneous: true}); | |
754 | 754 | this._windowList = new St.Widget({ |
755 | 755 | style_class: 'window-list', |
756 | 756 | reactive: true, |
768 | 768 | }); |
769 | 769 | this._windowList.connect('scroll-event', this._onScrollEvent.bind(this)); |
770 | 770 | |
771 | let indicatorsBox = new St.BoxLayout({ x_align: Clutter.ActorAlign.END }); | |
771 | let indicatorsBox = new St.BoxLayout({x_align: Clutter.ActorAlign.END}); | |
772 | 772 | box.add(indicatorsBox); |
773 | 773 | |
774 | 774 | this._workspaceIndicator = new WorkspaceIndicator(); |
775 | 775 | indicatorsBox.add_child(this._workspaceIndicator.container); |
776 | 776 | |
777 | this._mutterSettings = new Gio.Settings({ schema_id: 'org.gnome.mutter' }); | |
777 | this._mutterSettings = new Gio.Settings({schema_id: 'org.gnome.mutter'}); | |
778 | 778 | this._workspacesOnlyOnPrimaryChangedId = this._mutterSettings.connect( |
779 | 779 | 'changed::workspaces-only-on-primary', |
780 | 780 | this._updateWorkspaceIndicatorVisibility.bind(this)); |
917 | 917 | |
918 | 918 | let children = this._windowList.get_children(); |
919 | 919 | let [, childWidth] = children[0].get_preferred_width(-1); |
920 | let { spacing } = this._windowList.layout_manager; | |
920 | let {spacing} = this._windowList.layout_manager; | |
921 | 921 | |
922 | 922 | let workspace = global.workspace_manager.get_active_workspace(); |
923 | 923 | let windows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace); |
0 | 0 | // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- |
1 | 1 | /* exported init buildPrefsWidget */ |
2 | 2 | |
3 | const { Adw, Gio, GLib, GObject, Gtk } = imports.gi; | |
3 | const {Adw, Gio, GLib, GObject, Gtk} = imports.gi; | |
4 | 4 | |
5 | 5 | const ExtensionUtils = imports.misc.extensionUtils; |
6 | 6 | |
36 | 36 | this.add(groupingGroup); |
37 | 37 | |
38 | 38 | const modes = [ |
39 | { mode: 'never', title: _('Never group windows') }, | |
40 | { mode: 'auto', title: _('Group windows when space is limited') }, | |
41 | { mode: 'always', title: _('Always group windows') }, | |
39 | {mode: 'never', title: _('Never group windows')}, | |
40 | {mode: 'auto', title: _('Group windows when space is limited')}, | |
41 | {mode: 'always', title: _('Always group windows')}, | |
42 | 42 | ]; |
43 | 43 | |
44 | for (const { mode, title } of modes) { | |
44 | for (const {mode, title} of modes) { | |
45 | 45 | const check = new Gtk.CheckButton({ |
46 | 46 | action_name: 'window-list.grouping-mode', |
47 | 47 | action_target: new GLib.Variant('s', mode), |
0 | 0 | /* exported WindowPicker, WindowPickerToggle */ |
1 | const { Clutter, GObject, Shell, St } = imports.gi; | |
1 | const {Clutter, GObject, Shell, St} = imports.gi; | |
2 | 2 | |
3 | 3 | const Layout = imports.ui.layout; |
4 | 4 | const Main = imports.ui.main; |
5 | const { WorkspacesDisplay } = imports.ui.workspacesView; | |
5 | const {WorkspacesDisplay} = imports.ui.workspacesView; | |
6 | 6 | const Workspace = imports.ui.workspace; |
7 | 7 | |
8 | const { VIGNETTE_BRIGHTNESS } = imports.ui.lightbox; | |
8 | const {VIGNETTE_BRIGHTNESS} = imports.ui.lightbox; | |
9 | 9 | const { |
10 | 10 | SIDE_CONTROLS_ANIMATION_TIME, |
11 | 11 | OverviewAdjustment, |
89 | 89 | |
90 | 90 | this._adjChangedId = |
91 | 91 | this._overviewAdjustment.connect('notify::value', () => { |
92 | const { value: progress } = this._overviewAdjustment; | |
92 | const {value: progress} = this._overviewAdjustment; | |
93 | 93 | const brightness = 1 - (1 - VIGNETTE_BRIGHTNESS) * progress; |
94 | 94 | for (const bg of this._background?._backgroundGroup ?? []) { |
95 | 95 | bg.content.set({ |
150 | 150 | |
151 | 151 | var WindowPicker = class WindowPicker extends Clutter.Actor { |
152 | 152 | static [GObject.signals] = { |
153 | 'open-state-changed': { param_types: [GObject.TYPE_BOOLEAN] }, | |
153 | 'open-state-changed': {param_types: [GObject.TYPE_BOOLEAN]}, | |
154 | 154 | }; |
155 | 155 | |
156 | 156 | static { |
158 | 158 | } |
159 | 159 | |
160 | 160 | constructor() { |
161 | super({ reactive: true }); | |
161 | super({reactive: true}); | |
162 | 162 | |
163 | 163 | this._visible = false; |
164 | 164 | this._modal = false; |
0 | 0 | /* exported WorkspaceIndicator */ |
1 | const { Clutter, Gio, GObject, Meta, St } = imports.gi; | |
1 | const {Clutter, Gio, GObject, Meta, St} = imports.gi; | |
2 | 2 | |
3 | 3 | const DND = imports.ui.dnd; |
4 | 4 | const ExtensionUtils = imports.misc.extensionUtils; |
24 | 24 | }); |
25 | 25 | |
26 | 26 | this._delegate = this; |
27 | DND.makeDraggable(this, { restoreOnSuccess: true }); | |
27 | DND.makeDraggable(this, {restoreOnSuccess: true}); | |
28 | 28 | |
29 | 29 | this._window = window; |
30 | 30 | |
273 | 273 | let workspaceManager = global.workspace_manager; |
274 | 274 | |
275 | 275 | this._currentWorkspace = workspaceManager.get_active_workspace_index(); |
276 | this._statusLabel = new St.Label({ text: this._getStatusText() }); | |
276 | this._statusLabel = new St.Label({text: this._getStatusText()}); | |
277 | 277 | |
278 | 278 | this._statusBin = new St.Bin({ |
279 | 279 | style_class: 'status-label-bin', |
308 | 308 | this._updateThumbnails(); |
309 | 309 | this._updateThumbnailVisibility(); |
310 | 310 | |
311 | this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.wm.preferences' }); | |
311 | this._settings = new Gio.Settings({schema_id: 'org.gnome.desktop.wm.preferences'}); | |
312 | 312 | this._settingsChangedId = this._settings.connect( |
313 | 313 | 'changed::workspace-names', this._updateMenuLabels.bind(this)); |
314 | 314 | } |
326 | 326 | } |
327 | 327 | |
328 | 328 | _updateThumbnailVisibility() { |
329 | const { workspaceManager } = global; | |
329 | const {workspaceManager} = global; | |
330 | 330 | const vertical = workspaceManager.layout_rows === -1; |
331 | 331 | const useMenu = |
332 | 332 | vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS; |
0 | 0 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ |
1 | 1 | /* exported init */ |
2 | const { Clutter, Graphene, GObject, St } = imports.gi; | |
2 | const {Clutter, Graphene, GObject, St} = imports.gi; | |
3 | 3 | |
4 | 4 | const Main = imports.ui.main; |
5 | 5 | const OverviewControls = imports.ui.overviewControls; |
52 | 52 | } |
53 | 53 | |
54 | 54 | getWindowWithTooltip(id) { |
55 | const { layoutManager } = this._container; | |
55 | const {layoutManager} = this._container; | |
56 | 56 | const slot = layoutManager._windowSlots[id - 1]; |
57 | 57 | return slot ? slot[WINDOW_SLOT].metaWindow : null; |
58 | 58 | } |
59 | 59 | |
60 | 60 | showWindowsTooltips() { |
61 | const { layoutManager } = this._container; | |
61 | const {layoutManager} = this._container; | |
62 | 62 | for (let i = 0; i < layoutManager._windowSlots.length; i++) { |
63 | 63 | if (layoutManager._windowSlots[i]) |
64 | 64 | layoutManager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`); |
66 | 66 | } |
67 | 67 | |
68 | 68 | hideWindowsTooltips() { |
69 | const { layoutManager } = this._container; | |
69 | const {layoutManager} = this._container; | |
70 | 70 | for (let i in layoutManager._windowSlots) { |
71 | 71 | if (layoutManager._windowSlots[i]) |
72 | 72 | layoutManager._windowSlots[i][WINDOW_SLOT].hideTooltip(); |
92 | 92 | this._text.add_constraint(new Clutter.AlignConstraint({ |
93 | 93 | source: this.windowContainer, |
94 | 94 | align_axis: Clutter.AlignAxis.X_AXIS, |
95 | pivot_point: new Graphene.Point({ x: 0.5, y: -1 }), | |
95 | pivot_point: new Graphene.Point({x: 0.5, y: -1}), | |
96 | 96 | factor: this._closeButtonSide === St.Side.LEFT ? 1 : 0, |
97 | 97 | })); |
98 | 98 | this._text.add_constraint(new Clutter.AlignConstraint({ |
99 | 99 | source: this.windowContainer, |
100 | 100 | align_axis: Clutter.AlignAxis.Y_AXIS, |
101 | pivot_point: new Graphene.Point({ x: -1, y: 0.5 }), | |
101 | pivot_point: new Graphene.Point({x: -1, y: 0.5}), | |
102 | 102 | factor: 0, |
103 | 103 | })); |
104 | 104 | |
106 | 106 | }).call(clone); |
107 | 107 | |
108 | 108 | clone.showTooltip = function (text) { |
109 | this._text.set({ text }); | |
109 | this._text.set({text}); | |
110 | 110 | this._text.show(); |
111 | 111 | }; |
112 | 112 | |
169 | 169 | } |
170 | 170 | |
171 | 171 | _onKeyPress(s, o) { |
172 | const { ControlsState } = OverviewControls; | |
172 | const {ControlsState} = OverviewControls; | |
173 | 173 | if (this._overviewAdjustment.value !== ControlsState.WINDOW_PICKER) |
174 | 174 | return false; |
175 | 175 |
0 | 0 | // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- |
1 | 1 | /* exported init enable disable */ |
2 | 2 | |
3 | const { Clutter, Gio, GObject, Meta, St } = imports.gi; | |
3 | const {Clutter, Gio, GObject, Meta, St} = imports.gi; | |
4 | 4 | |
5 | 5 | const DND = imports.ui.dnd; |
6 | 6 | const ExtensionUtils = imports.misc.extensionUtils; |
29 | 29 | }); |
30 | 30 | |
31 | 31 | this._delegate = this; |
32 | DND.makeDraggable(this, { restoreOnSuccess: true }); | |
32 | DND.makeDraggable(this, {restoreOnSuccess: true}); | |
33 | 33 | |
34 | 34 | this._window = window; |
35 | 35 | |
309 | 309 | this._updateThumbnails(); |
310 | 310 | this._updateThumbnailVisibility(); |
311 | 311 | |
312 | this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA }); | |
312 | this._settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA}); | |
313 | 313 | this._settingsChangedId = this._settings.connect( |
314 | 314 | `changed::${WORKSPACE_KEY}`, |
315 | 315 | this._updateMenuLabels.bind(this)); |
330 | 330 | } |
331 | 331 | |
332 | 332 | _updateThumbnailVisibility() { |
333 | const { workspaceManager } = global; | |
333 | const {workspaceManager} = global; | |
334 | 334 | const vertical = workspaceManager.layout_rows === -1; |
335 | 335 | const useMenu = |
336 | 336 | vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS; |
0 | 0 | // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- |
1 | 1 | /* exported init buildPrefsWidget */ |
2 | 2 | |
3 | const { Adw, Gio, GLib, GObject, Gtk, Pango } = imports.gi; | |
3 | const {Adw, Gio, GLib, GObject, Gtk, Pango} = imports.gi; | |
4 | 4 | |
5 | 5 | const ExtensionUtils = imports.misc.extensionUtils; |
6 | 6 | |
40 | 40 | GObject.registerClass(this); |
41 | 41 | } |
42 | 42 | |
43 | #settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA }); | |
43 | #settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA}); | |
44 | 44 | #names = this.#settings.get_strv(WORKSPACE_KEY); |
45 | 45 | #items = Gtk.StringList.new(this.#names); |
46 | 46 | #changedId; |
130 | 130 | |
131 | 131 | this._workspaces = new WorkspacesList(); |
132 | 132 | |
133 | const store = new Gio.ListStore({ item_type: Gio.ListModel }); | |
134 | const listModel = new Gtk.FlattenListModel({ model: store }); | |
133 | const store = new Gio.ListStore({item_type: Gio.ListModel}); | |
134 | const listModel = new Gtk.FlattenListModel({model: store}); | |
135 | 135 | store.append(this._workspaces); |
136 | 136 | store.append(new NewItemModel()); |
137 | 137 | |
156 | 156 | } |
157 | 157 | |
158 | 158 | constructor(name) { |
159 | super({ name }); | |
159 | super({name}); | |
160 | 160 | |
161 | 161 | const box = new Gtk.Box({ |
162 | 162 | spacing: 12, |
2 | 2 | - error |
3 | 3 | - properties: never |
4 | 4 | allow: [^vfunc_, ^on_] |
5 | object-curly-spacing: | |
5 | consistent-return: error | |
6 | eqeqeq: | |
6 | 7 | - error |
7 | - always | |
8 | - smart | |
8 | 9 | prefer-arrow-callback: error |
9 | 10 | globals: |
10 | 11 | global: readonly |
0 | 0 | project('gnome-shell-extensions', |
1 | version: '42.3', | |
1 | version: '43.0', | |
2 | 2 | meson_version: '>= 0.53.0', |
3 | 3 | license: 'GPL2+' |
4 | 4 | ) |
5 | 5 | msgid "" |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: gnome-shell-extensions main\n" |
8 | "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" | |
9 | "issues\n" | |
10 | "POT-Creation-Date: 2022-02-12 02:08+0000\n" | |
8 | "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n" | |
9 | "POT-Creation-Date: 2022-07-10 12:54+0000\n" | |
11 | 10 | "PO-Revision-Date: 2022-02-12 02:08+0000\n" |
12 | 11 | "Last-Translator: Нанба Наала <[email protected]>, 2022\n" |
13 | 12 | "Language-Team: Abkhazian <[email protected]>\n" |
33 | 32 | msgid "GNOME Classic on Xorg" |
34 | 33 | msgstr "Аклассикатә GNOME Xorg аҟны" |
35 | 34 | |
36 | #: extensions/apps-menu/extension.js:112 | |
35 | #: extensions/apps-menu/extension.js:118 | |
37 | 36 | msgid "Favorites" |
38 | 37 | msgstr "Иалкаау" |
39 | 38 | |
40 | #: extensions/apps-menu/extension.js:370 | |
39 | #: extensions/apps-menu/extension.js:379 | |
41 | 40 | msgid "Applications" |
42 | 41 | msgstr "Аԥшьқәа" |
43 | 42 | |
49 | 48 | msgid "" |
50 | 49 | "A list of strings, each containing an application id (desktop file name), " |
51 | 50 | "followed by a colon and the workspace number" |
52 | msgstr "Ацәаҳәақәа рыхьӡынҵа аиԥшрагәаҭага аԥшьы (desktop-фаил ахьӡ )" | |
53 | "змоу, зашьҭахь ҩ-кәаԥки аусуратә ҭыԥ аномери гылоу " | |
54 | ||
55 | #: extensions/auto-move-windows/prefs.js:19 | |
51 | msgstr "" | |
52 | "Ацәаҳәақәа рыхьӡынҵа аиԥшрагәаҭага аԥшьы (desktop-фаил ахьӡ )змоу, зашьҭахь " | |
53 | "ҩ-кәаԥки аусуратә ҭыԥ аномери гылоу " | |
54 | ||
55 | #: extensions/auto-move-windows/prefs.js:152 | |
56 | 56 | msgid "Workspace Rules" |
57 | 57 | msgstr "Аусуратә ҵакыра аԥҟаррақәа" |
58 | 58 | |
59 | #: extensions/auto-move-windows/prefs.js:245 | |
59 | #: extensions/auto-move-windows/prefs.js:306 | |
60 | 60 | msgid "Add Rule" |
61 | 61 | msgstr "Аԥҟара ацҵара" |
62 | 62 | |
63 | 63 | #. TRANSLATORS: %s is the filesystem name |
64 | #: extensions/drive-menu/extension.js:123 | |
64 | #: extensions/drive-menu/extension.js:126 | |
65 | 65 | #: extensions/places-menu/placeDisplay.js:210 |
66 | 66 | #, javascript-format |
67 | 67 | msgid "Ejecting drive “%s” failed:" |
68 | 68 | msgstr "Адиск «%s» аҭыгара залымшахеит:" |
69 | 69 | |
70 | #: extensions/drive-menu/extension.js:139 | |
70 | #: extensions/drive-menu/extension.js:145 | |
71 | 71 | msgid "Removable devices" |
72 | 72 | msgstr "Иаҿыҵуа аиҿартәырақәа" |
73 | 73 | |
74 | #: extensions/drive-menu/extension.js:161 | |
74 | #: extensions/drive-menu/extension.js:167 | |
75 | 75 | msgid "Open Files" |
76 | 76 | msgstr "Афаил аартра" |
77 | 77 | |
84 | 84 | "Try to use more screen for placing window thumbnails by adapting to screen " |
85 | 85 | "aspect ratio, and consolidating them further to reduce the bounding box. " |
86 | 86 | "This setting applies only with the natural placement strategy." |
87 | msgstr "Шәхы иашәырхәа изыцҵоу аекран аҵакыра аминиатиура атыԥаркразы" | |
88 | "аекран аганқәа реизышәара ԥсахуа аҭыԥыркра шәыржәпала, анаҩс адаԥа ҳәаақәызҵо ашәагаа архәыҷразы" | |
89 | "ари ахышәара ахархәара аиуоит аминиатиура «natural» аҭыԥыркра алгоритм ахархәараан" | |
87 | msgstr "" | |
88 | "Шәхы иашәырхәа изыцҵоу аекран аҵакыра аминиатиура атыԥаркразыаекран аганқәа " | |
89 | "реизышәара ԥсахуа аҭыԥыркра шәыржәпала, анаҩс адаԥа ҳәаақәызҵо ашәагаа " | |
90 | "архәыҷразыари ахышәара ахархәара аиуоит аминиатиура «natural» аҭыԥыркра " | |
91 | "алгоритм ахархәараан" | |
90 | 92 | |
91 | 93 | #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 |
92 | 94 | msgid "Place window captions on top" |
97 | 99 | "If true, place window captions on top the respective thumbnail, overriding " |
98 | 100 | "shell default of placing it at the bottom. Changing this setting requires " |
99 | 101 | "restarting the shell to have any effect." |
100 | msgstr "Иалхзар, ахқәа аминиатиура хыхьтәи ахәҭаҟны аҭыԥ ааныркылалоит" | |
101 | "(ишыҟоу еиԥш ахқәа ҵаҟатәи аҭыԥ ааныркылоит).Ари ахышәара аԥсахраан," | |
102 | "уи аус аура иалагарцазы, иаҭахуп Shell аиҭарура." | |
103 | ||
104 | #: extensions/places-menu/extension.js:88 | |
105 | #: extensions/places-menu/extension.js:91 | |
102 | msgstr "" | |
103 | "Иалхзар, ахқәа аминиатиура хыхьтәи ахәҭаҟны аҭыԥ ааныркылалоит(ишыҟоу еиԥш " | |
104 | "ахқәа ҵаҟатәи аҭыԥ ааныркылоит).Ари ахышәара аԥсахраан,уи аус аура " | |
105 | "иалагарцазы, иаҭахуп Shell аиҭарура." | |
106 | ||
107 | #: extensions/places-menu/extension.js:94 | |
108 | #: extensions/places-menu/extension.js:97 | |
106 | 109 | msgid "Places" |
107 | 110 | msgstr "Аҭыԥқәа" |
108 | 111 | |
165 | 168 | msgid "Maximize" |
166 | 169 | msgstr "Аиҵыхра" |
167 | 170 | |
168 | #: extensions/window-list/extension.js:434 | |
171 | #: extensions/window-list/extension.js:483 | |
169 | 172 | msgid "Minimize all" |
170 | 173 | msgstr "Зегьы реиҟәырҳәра" |
171 | 174 | |
172 | #: extensions/window-list/extension.js:440 | |
175 | #: extensions/window-list/extension.js:489 | |
173 | 176 | msgid "Unminimize all" |
174 | 177 | msgstr "Зегьы рырхынҳәра" |
175 | 178 | |
176 | #: extensions/window-list/extension.js:446 | |
179 | #: extensions/window-list/extension.js:495 | |
177 | 180 | msgid "Maximize all" |
178 | 181 | msgstr "Зегьы реиҵыхра" |
179 | 182 | |
180 | #: extensions/window-list/extension.js:454 | |
183 | #: extensions/window-list/extension.js:503 | |
181 | 184 | msgid "Unmaximize all" |
182 | 185 | msgstr "Зегьы реиҭашьақәыргылара" |
183 | 186 | |
184 | #: extensions/window-list/extension.js:462 | |
187 | #: extensions/window-list/extension.js:511 | |
185 | 188 | msgid "Close all" |
186 | 189 | msgstr "Зегьы рыркра" |
187 | 190 | |
188 | #: extensions/window-list/extension.js:741 | |
191 | #: extensions/window-list/extension.js:795 | |
189 | 192 | msgid "Window List" |
190 | 193 | msgstr "Аԥенџьырқәа рыхьӡынҵа" |
191 | 194 | |
197 | 200 | msgid "" |
198 | 201 | "Decides when to group windows from the same application on the window list. " |
199 | 202 | "Possible values are “never”, “auto” and “always”." |
200 | msgstr "Иҳәаақәнаҵоит, ианаҭаху ԥшьык иаҵанакуа аԥенџьырқәа реидыргәыԥлара, аԥенџьырқәа рыхьӡынҵаҟны" | |
201 | " Иҟалар зылшо аҵакқәа : «never» — ахаан; «auto» — автоматла; «always» — есқьынгьы" | |
203 | msgstr "" | |
204 | "Иҳәаақәнаҵоит, ианаҭаху ԥшьык иаҵанакуа аԥенџьырқәа реидыргәыԥлара, " | |
205 | "аԥенџьырқәа рыхьӡынҵаҟны Иҟалар зылшо аҵакқәа : «never» — ахаан; «auto» — " | |
206 | "автоматла; «always» — есқьынгьы" | |
202 | 207 | |
203 | 208 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 |
204 | #: extensions/window-list/prefs.js:76 | |
209 | #: extensions/window-list/prefs.js:79 | |
205 | 210 | msgid "Show windows from all workspaces" |
206 | 211 | msgstr "Аҵакырақәа зегьы рҟынтә аԥенџьырқәа раарԥшра" |
207 | 212 | |
208 | 213 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 |
209 | 214 | msgid "Whether to show windows from all workspaces or only the current one." |
210 | msgstr | |
211 | "Аԥенџьырқәа рыхьӡынҵа аусуратә ҵакырақәа зегь рҟынтә акәу,мамзар уажәтәи аҟынтә акәу ишаарԥшлатәу" | |
215 | msgstr "" | |
216 | "Аԥенџьырқәа рыхьӡынҵа аусуратә ҵакырақәа зегь рҟынтә акәу,мамзар уажәтәи " | |
217 | "аҟынтә акәу ишаарԥшлатәу" | |
212 | 218 | |
213 | 219 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27 |
214 | 220 | msgid "Show the window list on all monitors" |
218 | 224 | msgid "" |
219 | 225 | "Whether to show the window list on all connected monitors or only on the " |
220 | 226 | "primary one." |
221 | msgstr | |
222 | "Аԥенџьырқәа рыхьӡынҵа иаҿаку амониторқәа зегьы рыҟноума иахьаарԥшлатәу , мамзар ихадоу аҟны акәу." | |
223 | ||
224 | #: extensions/window-list/prefs.js:32 | |
227 | msgstr "" | |
228 | "Аԥенџьырқәа рыхьӡынҵа иаҿаку амониторқәа зегьы рыҟноума иахьаарԥшлатәу , " | |
229 | "мамзар ихадоу аҟны акәу." | |
230 | ||
231 | #: extensions/window-list/prefs.js:35 | |
225 | 232 | msgid "Window Grouping" |
226 | 233 | msgstr "Аԥенџьырқәа реидыргәыԥлара" |
227 | 234 | |
228 | #: extensions/window-list/prefs.js:37 | |
235 | #: extensions/window-list/prefs.js:40 | |
229 | 236 | msgid "Never group windows" |
230 | 237 | msgstr "Ахаангьы аԥенџьырқәа реидмыргәыԥлара" |
231 | 238 | |
232 | #: extensions/window-list/prefs.js:38 | |
239 | #: extensions/window-list/prefs.js:41 | |
233 | 240 | msgid "Group windows when space is limited" |
234 | 241 | msgstr "Аҭыԥ маҷхазар, аԥенџьырқәа еидшәыргәыԥла" |
235 | 242 | |
236 | #: extensions/window-list/prefs.js:39 | |
243 | #: extensions/window-list/prefs.js:42 | |
237 | 244 | msgid "Always group windows" |
238 | 245 | msgstr "Еснагь аԥенџьырқәа реидыргәыԥлара" |
239 | 246 | |
240 | #: extensions/window-list/prefs.js:63 | |
247 | #: extensions/window-list/prefs.js:66 | |
241 | 248 | msgid "Show on all monitors" |
242 | 249 | msgstr "Амониторқәа зегьы рҟны рырбара" |
243 | 250 | |
244 | #: extensions/window-list/workspaceIndicator.js:249 | |
245 | #: extensions/workspace-indicator/extension.js:254 | |
251 | #: extensions/window-list/workspaceIndicator.js:261 | |
252 | #: extensions/workspace-indicator/extension.js:266 | |
246 | 253 | msgid "Workspace Indicator" |
247 | 254 | msgstr "Аусуратә ҵакыра аиндикатор" |
248 | 255 | |
249 | #: extensions/workspace-indicator/prefs.js:18 | |
256 | #: extensions/workspace-indicator/prefs.js:62 | |
257 | #, javascript-format | |
258 | msgid "Workspace %d" | |
259 | msgstr "Аусуратә ҵакыра %d" | |
260 | ||
261 | #: extensions/workspace-indicator/prefs.js:129 | |
250 | 262 | msgid "Workspace Names" |
251 | 263 | msgstr "Аусуратә ҵакырақәа рыхьӡқәа" |
252 | 264 | |
253 | #: extensions/workspace-indicator/prefs.js:39 | |
254 | #, javascript-format | |
255 | msgid "Workspace %d" | |
256 | msgstr "Аусуратә ҵакыра %d" | |
257 | ||
258 | #: extensions/workspace-indicator/prefs.js:184 | |
265 | #: extensions/workspace-indicator/prefs.js:255 | |
259 | 266 | msgid "Add Workspace" |
260 | 267 | msgstr "Аусуратә ҵакыра ацҵара" |
79 | 79 | |
80 | 80 | #: extensions/drive-menu/extension.js:171 |
81 | 81 | msgid "Open Files" |
82 | msgstr "Apri file" | |
82 | msgstr "Apri File" | |
83 | 83 | |
84 | 84 | #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5 |
85 | 85 | msgid "Use more screen for windows" |
8 | 8 | "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" |
9 | 9 | "issues\n" |
10 | 10 | "POT-Creation-Date: 2022-02-13 10:42+0000\n" |
11 | "PO-Revision-Date: 2022-02-13 14:35+0100\n" | |
11 | "PO-Revision-Date: 2022-09-14 16:37+0200\n" | |
12 | 12 | "Last-Translator: Temuri Doghonadze <[email protected]>\n" |
13 | 13 | "Language-Team: \n" |
14 | 14 | "Language: ka\n" |
15 | 15 | "MIME-Version: 1.0\n" |
16 | 16 | "Content-Type: text/plain; charset=UTF-8\n" |
17 | 17 | "Content-Transfer-Encoding: 8bit\n" |
18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | |
19 | "X-Generator: Poedit 3.0.1\n" | |
18 | "Plural-Forms: nplurals=1; plural=0;\n" | |
19 | "X-Generator: Poedit 3.1.1\n" | |
20 | 20 | |
21 | 21 | #: data/gnome-classic.desktop.in:3 |
22 | 22 | msgid "GNOME Classic" |
103 | 103 | "shell default of placing it at the bottom. Changing this setting requires " |
104 | 104 | "restarting the shell to have any effect." |
105 | 105 | msgstr "" |
106 | "თუ ჩართულია, ფანჯრის სათაური შესაბამისი მინიატურის თავზე გამოჩნდება, რითიც " | |
107 | "გადაფარავს გარსის ნაგულისხმებ მნიშვნელობას, რომ ის ძირზე იყოს. ამ " | |
108 | "პარამეტრის ძალაში შესასვლელად საჭიროა გარსის გადატვირთვა." | |
106 | 109 | |
107 | 110 | #: extensions/places-menu/extension.js:88 |
108 | 111 | #: extensions/places-menu/extension.js:91 |
5 | 5 | msgid "" |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: gnome-shell-extension gnome 3.14\n" |
8 | "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" | |
9 | "issues\n" | |
10 | "POT-Creation-Date: 2020-05-28 00:55+0000\n" | |
11 | "PO-Revision-Date: 2021-05-01 11:32+0545\n" | |
8 | "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n" | |
9 | "POT-Creation-Date: 2022-07-10 12:54+0000\n" | |
10 | "PO-Revision-Date: 2022-09-08 02:59+0545\n" | |
12 | 11 | "Last-Translator: Pawan Chitrakar <[email protected]>\n" |
13 | 12 | "Language-Team: Nepali Translation Team <[email protected]>\n" |
14 | 13 | "Language: ne\n" |
15 | 14 | "MIME-Version: 1.0\n" |
16 | 15 | "Content-Type: text/plain; charset=UTF-8\n" |
17 | 16 | "Content-Transfer-Encoding: 8bit\n" |
18 | "X-Generator: Poedit 2.4.2\n" | |
19 | 17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
18 | "X-Generator: Poedit 3.0.1\n" | |
20 | 19 | "X-Poedit-SourceCharset: UTF-8\n" |
21 | 20 | |
22 | #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 | |
21 | #: data/gnome-classic.desktop.in:3 | |
23 | 22 | msgid "GNOME Classic" |
24 | 23 | msgstr "जिनोम क्लासिक" |
25 | 24 | |
26 | #: data/gnome-classic.desktop.in:4 | |
25 | #: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4 | |
26 | #: data/gnome-classic-xorg.desktop.in:4 | |
27 | 27 | msgid "This session logs you into GNOME Classic" |
28 | 28 | msgstr "यो सेसन जिनोम क्लासिकमा लगईन हुन्छ" |
29 | 29 | |
30 | #: extensions/apps-menu/extension.js:113 | |
30 | #: data/gnome-classic-wayland.desktop.in:3 | |
31 | msgid "GNOME Classic on Wayland" | |
32 | msgstr "वेल्याण्डमा जिनोम क्लासिक" | |
33 | ||
34 | #: data/gnome-classic-xorg.desktop.in:3 | |
35 | msgid "GNOME Classic on Xorg" | |
36 | msgstr "Xorg मा जिनोम क्लासिक" | |
37 | ||
38 | #: extensions/apps-menu/extension.js:118 | |
31 | 39 | msgid "Favorites" |
32 | 40 | msgstr "मनपर्ने" |
33 | 41 | |
34 | #: extensions/apps-menu/extension.js:369 | |
42 | #: extensions/apps-menu/extension.js:379 | |
35 | 43 | msgid "Applications" |
36 | 44 | msgstr "अनुप्रयोग" |
37 | 45 | |
41 | 49 | |
42 | 50 | #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7 |
43 | 51 | msgid "" |
44 | "A list of strings, each containing an application id (desktop file name), " | |
45 | "followed by a colon and the workspace number" | |
46 | msgstr "" | |
47 | "स्ट्रिङहरूको सूची, प्रत्येकमा अनुप्रयोग आईडी (डेस्कटप फाइल नाम) समाविष्ट छ, त्यसपछि " | |
48 | "विराम र कार्यस्थान नम्बरद्वारा अनुगमन गरियो" | |
49 | ||
50 | #: extensions/auto-move-windows/prefs.js:35 | |
52 | "A list of strings, each containing an application id (desktop file name), followed by a colon " | |
53 | "and the workspace number" | |
54 | msgstr "" | |
55 | "स्ट्रिङहरूको सूची, प्रत्येकमा अनुप्रयोग आईडी (डेस्कटप फाइल नाम) समाविष्ट छ, त्यसपछि विराम र कार्यस्थान " | |
56 | "नम्बरद्वारा अनुगमन गरियो" | |
57 | ||
58 | #: extensions/auto-move-windows/prefs.js:152 | |
51 | 59 | msgid "Workspace Rules" |
52 | 60 | msgstr "कार्यस्थान नियम" |
53 | 61 | |
54 | #: extensions/auto-move-windows/prefs.js:243 | |
62 | #: extensions/auto-move-windows/prefs.js:306 | |
55 | 63 | msgid "Add Rule" |
56 | 64 | msgstr "नियम थप्नुहोस्" |
57 | 65 | |
58 | 66 | #. TRANSLATORS: %s is the filesystem name |
59 | #: extensions/drive-menu/extension.js:112 | |
60 | #: extensions/places-menu/placeDisplay.js:233 | |
67 | #: extensions/drive-menu/extension.js:126 extensions/places-menu/placeDisplay.js:210 | |
61 | 68 | #, javascript-format |
62 | 69 | msgid "Ejecting drive “%s” failed:" |
63 | 70 | msgstr "\"%s\" ड्राइभ निकाल्न असफल भयो:" |
64 | 71 | |
65 | #: extensions/drive-menu/extension.js:128 | |
72 | #: extensions/drive-menu/extension.js:145 | |
66 | 73 | msgid "Removable devices" |
67 | 74 | msgstr "छुट्याउन मिल्ने यन्त्र" |
68 | 75 | |
69 | #: extensions/drive-menu/extension.js:155 | |
76 | #: extensions/drive-menu/extension.js:167 | |
70 | 77 | msgid "Open Files" |
71 | 78 | msgstr "खुला फाइल" |
72 | 79 | |
76 | 83 | |
77 | 84 | #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6 |
78 | 85 | msgid "" |
79 | "Try to use more screen for placing window thumbnails by adapting to screen " | |
80 | "aspect ratio, and consolidating them further to reduce the bounding box. " | |
81 | "This setting applies only with the natural placement strategy." | |
82 | msgstr "" | |
83 | "सञ्झ्याल थम्बनेलहरू पर्दा आकार अनुपातमा अनुकूल गरेर राख्नका लागि धेरै पर्दा प्रयोग गर्न " | |
84 | "प्रयास गर्नुहोस्, र तिनीहरूलाई बाउन्डिङ बाकस घटाउन अझ संगठित गर्नुहोस् । यो तरिका " | |
85 | "प्राकृतिक प्लेसमेन्ट रणनीतिमा मात्र लागू हुन्छ।" | |
86 | "Try to use more screen for placing window thumbnails by adapting to screen aspect ratio, and " | |
87 | "consolidating them further to reduce the bounding box. This setting applies only with the " | |
88 | "natural placement strategy." | |
89 | msgstr "" | |
90 | "सञ्झ्याल थम्बनेलहरू पर्दा आकार अनुपातमा अनुकूल गरेर राख्नका लागि धेरै पर्दा प्रयोग गर्न प्रयास गर्नुहोस्, र " | |
91 | "तिनीहरूलाई बाउन्डिङ बाकस घटाउन अझ संगठित गर्नुहोस् । यो तरिका प्राकृतिक प्लेसमेन्ट रणनीतिमा मात्र लागू हुन्छ।" | |
86 | 92 | |
87 | 93 | #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 |
88 | 94 | msgid "Place window captions on top" |
90 | 96 | |
91 | 97 | #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12 |
92 | 98 | msgid "" |
93 | "If true, place window captions on top the respective thumbnail, overriding " | |
94 | "shell default of placing it at the bottom. Changing this setting requires " | |
95 | "restarting the shell to have any effect." | |
96 | msgstr "" | |
97 | "ठीक भएमा, सम्बन्धित थम्बनेलको माथि सञ्झ्याल क्याप्सन राख्नुहोस्, यसलाई तल राख्ने " | |
98 | "पूर्वनिर्धारित शेल अधिलेखन गर्नुहोस् । यो सेटिङ परिवर्तन गर्न कुनै प्रभाव पार्न शेल पुन: " | |
99 | "सुरुआत गर्नु आवश्यक हुन्छ ।" | |
100 | ||
101 | #: extensions/places-menu/extension.js:89 | |
102 | #: extensions/places-menu/extension.js:93 | |
99 | "If true, place window captions on top the respective thumbnail, overriding shell default of " | |
100 | "placing it at the bottom. Changing this setting requires restarting the shell to have any " | |
101 | "effect." | |
102 | msgstr "" | |
103 | "ठीक भएमा, सम्बन्धित थम्बनेलको माथि सञ्झ्याल क्याप्सन राख्नुहोस्, यसलाई तल राख्ने पूर्वनिर्धारित शेल अधिलेखन " | |
104 | "गर्नुहोस् । यो सेटिङ परिवर्तन गर्न कुनै प्रभाव पार्न शेल पुन: सुरुआत गर्नु आवश्यक हुन्छ ।" | |
105 | ||
106 | #: extensions/places-menu/extension.js:94 extensions/places-menu/extension.js:97 | |
103 | 107 | msgid "Places" |
104 | 108 | msgstr "ठाउँहरू" |
105 | 109 | |
106 | #: extensions/places-menu/placeDisplay.js:46 | |
110 | #: extensions/places-menu/placeDisplay.js:49 | |
107 | 111 | #, javascript-format |
108 | 112 | msgid "Failed to launch “%s”" |
109 | 113 | msgstr "%s सुरु गर्न असफल" |
110 | 114 | |
111 | #: extensions/places-menu/placeDisplay.js:61 | |
115 | #: extensions/places-menu/placeDisplay.js:64 | |
112 | 116 | #, javascript-format |
113 | 117 | msgid "Failed to mount volume for “%s”" |
114 | 118 | msgstr "\"%s\" का लागि भोल्युम माउन्ट गर्न असफल" |
115 | 119 | |
116 | #: extensions/places-menu/placeDisplay.js:148 | |
117 | #: extensions/places-menu/placeDisplay.js:171 | |
120 | #: extensions/places-menu/placeDisplay.js:125 extensions/places-menu/placeDisplay.js:148 | |
118 | 121 | msgid "Computer" |
119 | 122 | msgstr "कम्प्युटर" |
120 | 123 | |
121 | #: extensions/places-menu/placeDisplay.js:359 | |
124 | #: extensions/places-menu/placeDisplay.js:336 | |
122 | 125 | msgid "Home" |
123 | 126 | msgstr "गृह" |
124 | 127 | |
125 | #: extensions/places-menu/placeDisplay.js:404 | |
128 | #: extensions/places-menu/placeDisplay.js:381 | |
126 | 129 | msgid "Browse Network" |
127 | 130 | msgstr "सञ्जाल ब्राउज गर्नुहोस्" |
128 | 131 | |
142 | 145 | msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" |
143 | 146 | msgstr "~/.themes/name/gnome-shell बाट लोड गरिनुपर्ने विषयवस्तुको नाम" |
144 | 147 | |
145 | #: extensions/window-list/extension.js:98 | |
148 | #: extensions/window-list/extension.js:72 | |
146 | 149 | msgid "Close" |
147 | 150 | msgstr "बन्द" |
148 | 151 | |
149 | #: extensions/window-list/extension.js:118 | |
152 | #: extensions/window-list/extension.js:92 | |
150 | 153 | msgid "Unminimize" |
151 | 154 | msgstr "न्यूनतम नबनाउनुहोस्" |
152 | 155 | |
153 | #: extensions/window-list/extension.js:118 | |
156 | #: extensions/window-list/extension.js:92 | |
154 | 157 | msgid "Minimize" |
155 | 158 | msgstr "सानो बनाउनुहोस्" |
156 | 159 | |
157 | #: extensions/window-list/extension.js:125 | |
160 | #: extensions/window-list/extension.js:99 | |
158 | 161 | msgid "Unmaximize" |
159 | 162 | msgstr "अघिकतम नबनाउनुहोस्" |
160 | 163 | |
161 | #: extensions/window-list/extension.js:125 | |
164 | #: extensions/window-list/extension.js:99 | |
162 | 165 | msgid "Maximize" |
163 | 166 | msgstr "ठूलो बनाउनुहोस्" |
164 | 167 | |
165 | #: extensions/window-list/extension.js:428 | |
168 | #: extensions/window-list/extension.js:483 | |
166 | 169 | msgid "Minimize all" |
167 | 170 | msgstr "सबै सानो बनाउनुहोस्" |
168 | 171 | |
169 | #: extensions/window-list/extension.js:434 | |
172 | #: extensions/window-list/extension.js:489 | |
170 | 173 | msgid "Unminimize all" |
171 | 174 | msgstr "सबै न्यूनतम नबनाउनुहोस्" |
172 | 175 | |
173 | #: extensions/window-list/extension.js:440 | |
176 | #: extensions/window-list/extension.js:495 | |
174 | 177 | msgid "Maximize all" |
175 | 178 | msgstr "सबै ठूलो बनाउनुहोस्" |
176 | 179 | |
177 | #: extensions/window-list/extension.js:448 | |
180 | #: extensions/window-list/extension.js:503 | |
178 | 181 | msgid "Unmaximize all" |
179 | 182 | msgstr "सबैलाई अघिकतम नबनाउनुहोस्" |
180 | 183 | |
181 | #: extensions/window-list/extension.js:456 | |
184 | #: extensions/window-list/extension.js:511 | |
182 | 185 | msgid "Close all" |
183 | 186 | msgstr "सबै बन्द गर्नुहोस्" |
184 | 187 | |
185 | #: extensions/window-list/extension.js:734 | |
188 | #: extensions/window-list/extension.js:795 | |
186 | 189 | msgid "Window List" |
187 | 190 | msgstr "सञ्झ्याल सूची" |
188 | 191 | |
192 | 195 | |
193 | 196 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 |
194 | 197 | msgid "" |
195 | "Decides when to group windows from the same application on the window list. " | |
196 | "Possible values are “never”, “auto” and “always”." | |
197 | msgstr "" | |
198 | "सञ्झ्याल सूचीमा उस्तै अनुप्रयोगबाट कहिले समूह बनाउने निर्णय गर्दछ । सम्भावित मान \"कहिले " | |
199 | "पनि\", \"स्वचालित\" र \"सधैँ\" हुन् ।" | |
198 | "Decides when to group windows from the same application on the window list. Possible values are " | |
199 | "“never”, “auto” and “always”." | |
200 | msgstr "" | |
201 | "सञ्झ्याल सूचीमा उस्तै अनुप्रयोगबाट कहिले समूह बनाउने निर्णय गर्दछ । सम्भावित मान \"कहिले पनि\", \"स्वचालित\" र " | |
202 | "\"सधैँ\" हुन् ।" | |
200 | 203 | |
201 | 204 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 |
202 | #: extensions/window-list/prefs.js:100 | |
205 | #: extensions/window-list/prefs.js:79 | |
203 | 206 | msgid "Show windows from all workspaces" |
204 | 207 | msgstr "सबै कार्यस्थानबाट सन्झ्याल देखाउनुहोस्" |
205 | 208 | |
212 | 215 | msgstr "सबै मोनिटरमा सञ्झ्याल सूची देखाउनुहोस्" |
213 | 216 | |
214 | 217 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28 |
215 | msgid "" | |
216 | "Whether to show the window list on all connected monitors or only on the " | |
217 | "primary one." | |
218 | msgstr "" | |
219 | "सबै जडान गरिएको मोनिटरमा वा प्राथमिक मोनिटरमा मात्र सञ्झ्याल सूची देखाउने या नदेखाउने " | |
220 | "।" | |
221 | ||
222 | #: extensions/window-list/prefs.js:29 | |
218 | msgid "Whether to show the window list on all connected monitors or only on the primary one." | |
219 | msgstr "सबै जडान गरिएको मोनिटरमा वा प्राथमिक मोनिटरमा मात्र सञ्झ्याल सूची देखाउने या नदेखाउने ।" | |
220 | ||
221 | #: extensions/window-list/prefs.js:35 | |
223 | 222 | msgid "Window Grouping" |
224 | 223 | msgstr "समूहबद्ध सञ्झ्याल" |
225 | 224 | |
226 | #: extensions/window-list/prefs.js:58 | |
225 | #: extensions/window-list/prefs.js:40 | |
227 | 226 | msgid "Never group windows" |
228 | 227 | msgstr "सञ्झ्याल समुहबध्द नगर्ने" |
229 | 228 | |
230 | #: extensions/window-list/prefs.js:59 | |
229 | #: extensions/window-list/prefs.js:41 | |
231 | 230 | msgid "Group windows when space is limited" |
232 | 231 | msgstr "खाली स्थान सिमित भएको बेलामा सञ्झ्यालहरू समूह गर्नुहोस्" |
233 | 232 | |
234 | #: extensions/window-list/prefs.js:60 | |
233 | #: extensions/window-list/prefs.js:42 | |
235 | 234 | msgid "Always group windows" |
236 | 235 | msgstr "सञ्झ्याल सधैँ समुहबध्द गर्ने" |
237 | 236 | |
238 | #: extensions/window-list/prefs.js:94 | |
237 | #: extensions/window-list/prefs.js:66 | |
239 | 238 | msgid "Show on all monitors" |
240 | 239 | msgstr "सबै मोनिटरमा देखाउनुहोस्" |
241 | 240 | |
242 | #: extensions/window-list/workspaceIndicator.js:207 | |
243 | #: extensions/workspace-indicator/extension.js:213 | |
241 | #: extensions/window-list/workspaceIndicator.js:261 | |
242 | #: extensions/workspace-indicator/extension.js:266 | |
244 | 243 | msgid "Workspace Indicator" |
245 | 244 | msgstr "कार्यस्थान सूचक" |
246 | 245 | |
247 | #: extensions/workspace-indicator/prefs.js:34 | |
248 | msgid "Workspace Names" | |
249 | msgstr "कार्यस्थल नाम" | |
250 | ||
251 | #: extensions/workspace-indicator/prefs.js:67 | |
246 | #: extensions/workspace-indicator/prefs.js:62 | |
252 | 247 | #, javascript-format |
253 | 248 | msgid "Workspace %d" |
254 | 249 | msgstr "कार्यस्थल %d" |
255 | 250 | |
256 | #: extensions/workspace-indicator/prefs.js:218 | |
251 | #: extensions/workspace-indicator/prefs.js:129 | |
252 | msgid "Workspace Names" | |
253 | msgstr "कार्यस्थल नाम" | |
254 | ||
255 | #: extensions/workspace-indicator/prefs.js:255 | |
257 | 256 | msgid "Add Workspace" |
258 | 257 | msgstr "कार्यस्थल थप्नुहोस्" |
259 | 258 |
5 | 5 | # |
6 | 6 | msgid "" |
7 | 7 | msgstr "" |
8 | "Project-Id-Version: gnome-shell-extensions gnome-3-0\n" | |
8 | "Project-Id-Version: gnome-shell-extensions\n" | |
9 | 9 | "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" |
10 | 10 | "issues\n" |
11 | "POT-Creation-Date: 2021-11-06 14:08+0000\n" | |
12 | "PO-Revision-Date: 2021-12-11 15:12+0300\n" | |
11 | "POT-Creation-Date: 2022-07-10 12:54+0000\n" | |
12 | "PO-Revision-Date: 2022-09-14 13:09+0300\n" | |
13 | 13 | "Last-Translator: Aleksandr Melman <[email protected]>\n" |
14 | 14 | "Language-Team: Русский <[email protected]>\n" |
15 | 15 | "Language: ru\n" |
16 | 16 | "MIME-Version: 1.0\n" |
17 | 17 | "Content-Type: text/plain; charset=UTF-8\n" |
18 | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" | |
20 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" | |
21 | "X-Generator: Poedit 3.0\n" | |
19 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " | |
20 | "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" | |
21 | "X-Generator: Poedit 3.1\n" | |
22 | 22 | |
23 | 23 | #: data/gnome-classic.desktop.in:3 |
24 | 24 | msgid "GNOME Classic" |
27 | 27 | #: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4 |
28 | 28 | #: data/gnome-classic-xorg.desktop.in:4 |
29 | 29 | msgid "This session logs you into GNOME Classic" |
30 | msgstr "Данный сеанс использует классический рабочий стол GNOME" | |
30 | msgstr "Данный сеанс использует классический GNOME" | |
31 | 31 | |
32 | 32 | #: data/gnome-classic-wayland.desktop.in:3 |
33 | 33 | msgid "GNOME Classic on Wayland" |
37 | 37 | msgid "GNOME Classic on Xorg" |
38 | 38 | msgstr "Классический GNOME на Xorg" |
39 | 39 | |
40 | #: extensions/apps-menu/extension.js:112 | |
40 | #: extensions/apps-menu/extension.js:118 | |
41 | 41 | msgid "Favorites" |
42 | 42 | msgstr "Избранное" |
43 | 43 | |
44 | #: extensions/apps-menu/extension.js:366 | |
44 | #: extensions/apps-menu/extension.js:379 | |
45 | 45 | msgid "Applications" |
46 | 46 | msgstr "Приложения" |
47 | 47 | |
48 | 48 | #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6 |
49 | 49 | msgid "Application and workspace list" |
50 | msgstr "Приложение и список рабочих областей" | |
50 | msgstr "Приложение и список рабочих столов" | |
51 | 51 | |
52 | 52 | #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7 |
53 | 53 | msgid "" |
55 | 55 | "followed by a colon and the workspace number" |
56 | 56 | msgstr "" |
57 | 57 | "Список строк, содержащих идентификатор приложения (имя desktop-файла), за " |
58 | "которым следует двоеточие и номер рабочего места" | |
59 | ||
60 | #: extensions/auto-move-windows/prefs.js:34 | |
58 | "которым следует двоеточие и номер рабочего стола" | |
59 | ||
60 | #: extensions/auto-move-windows/prefs.js:152 | |
61 | 61 | msgid "Workspace Rules" |
62 | msgstr "Правила для рабочей области" | |
63 | ||
64 | #: extensions/auto-move-windows/prefs.js:236 | |
62 | msgstr "Правила для рабочих столов" | |
63 | ||
64 | #: extensions/auto-move-windows/prefs.js:306 | |
65 | 65 | msgid "Add Rule" |
66 | 66 | msgstr "Добавить правило" |
67 | 67 | |
68 | 68 | #. TRANSLATORS: %s is the filesystem name |
69 | #: extensions/drive-menu/extension.js:133 | |
70 | #: extensions/places-menu/placeDisplay.js:233 | |
69 | #: extensions/drive-menu/extension.js:126 | |
70 | #: extensions/places-menu/placeDisplay.js:210 | |
71 | 71 | #, javascript-format |
72 | 72 | msgid "Ejecting drive “%s” failed:" |
73 | 73 | msgstr "Не удалось извлечь диск «%s»:" |
74 | 74 | |
75 | #: extensions/drive-menu/extension.js:149 | |
75 | #: extensions/drive-menu/extension.js:145 | |
76 | 76 | msgid "Removable devices" |
77 | 77 | msgstr "Съёмные устройства" |
78 | 78 | |
79 | #: extensions/drive-menu/extension.js:171 | |
79 | #: extensions/drive-menu/extension.js:167 | |
80 | 80 | msgid "Open Files" |
81 | 81 | msgstr "Открыть файлы" |
82 | 82 | |
109 | 109 | "умолчанию заголовки располагаются снизу). При изменении этого параметра, " |
110 | 110 | "чтобы оно вступило в силу, необходимо перезапустить Shell." |
111 | 111 | |
112 | #: extensions/places-menu/extension.js:88 | |
113 | #: extensions/places-menu/extension.js:91 | |
112 | #: extensions/places-menu/extension.js:94 | |
113 | #: extensions/places-menu/extension.js:97 | |
114 | 114 | msgid "Places" |
115 | 115 | msgstr "Места" |
116 | 116 | |
117 | #: extensions/places-menu/placeDisplay.js:46 | |
117 | #: extensions/places-menu/placeDisplay.js:49 | |
118 | 118 | #, javascript-format |
119 | 119 | msgid "Failed to launch “%s”" |
120 | 120 | msgstr "Не удалось запустить «%s»" |
121 | 121 | |
122 | #: extensions/places-menu/placeDisplay.js:61 | |
122 | #: extensions/places-menu/placeDisplay.js:64 | |
123 | 123 | #, javascript-format |
124 | 124 | msgid "Failed to mount volume for “%s”" |
125 | 125 | msgstr "Не удалось смонтировать том для «%s»" |
126 | 126 | |
127 | #: extensions/places-menu/placeDisplay.js:125 | |
127 | 128 | #: extensions/places-menu/placeDisplay.js:148 |
128 | #: extensions/places-menu/placeDisplay.js:171 | |
129 | 129 | msgid "Computer" |
130 | 130 | msgstr "Компьютер" |
131 | 131 | |
132 | #: extensions/places-menu/placeDisplay.js:359 | |
132 | #: extensions/places-menu/placeDisplay.js:336 | |
133 | 133 | msgid "Home" |
134 | 134 | msgstr "Домашняя папка" |
135 | 135 | |
136 | #: extensions/places-menu/placeDisplay.js:404 | |
136 | #: extensions/places-menu/placeDisplay.js:381 | |
137 | 137 | msgid "Browse Network" |
138 | 138 | msgstr "Обзор сети" |
139 | 139 | |
174 | 174 | msgid "Maximize" |
175 | 175 | msgstr "Развернуть" |
176 | 176 | |
177 | #: extensions/window-list/extension.js:434 | |
177 | #: extensions/window-list/extension.js:483 | |
178 | 178 | msgid "Minimize all" |
179 | 179 | msgstr "Свернуть все" |
180 | 180 | |
181 | 181 | # ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize) |
182 | #: extensions/window-list/extension.js:440 | |
182 | #: extensions/window-list/extension.js:489 | |
183 | 183 | msgid "Unminimize all" |
184 | 184 | msgstr "Вернуть все" |
185 | 185 | |
186 | #: extensions/window-list/extension.js:446 | |
186 | #: extensions/window-list/extension.js:495 | |
187 | 187 | msgid "Maximize all" |
188 | 188 | msgstr "Развернуть все" |
189 | 189 | |
190 | #: extensions/window-list/extension.js:454 | |
190 | #: extensions/window-list/extension.js:503 | |
191 | 191 | msgid "Unmaximize all" |
192 | 192 | msgstr "Восстановить все" |
193 | 193 | |
194 | #: extensions/window-list/extension.js:462 | |
194 | #: extensions/window-list/extension.js:511 | |
195 | 195 | msgid "Close all" |
196 | 196 | msgstr "Закрыть все" |
197 | 197 | |
198 | #: extensions/window-list/extension.js:741 | |
198 | #: extensions/window-list/extension.js:795 | |
199 | 199 | msgid "Window List" |
200 | 200 | msgstr "Список окон" |
201 | 201 | |
213 | 213 | "«always» — всегда." |
214 | 214 | |
215 | 215 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 |
216 | #: extensions/window-list/prefs.js:86 | |
216 | #: extensions/window-list/prefs.js:79 | |
217 | 217 | msgid "Show windows from all workspaces" |
218 | msgstr "Отображать окна со всех рабочих областей" | |
218 | msgstr "Отображать окна со всех рабочих столов" | |
219 | 219 | |
220 | 220 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 |
221 | 221 | msgid "Whether to show windows from all workspaces or only the current one." |
222 | 222 | msgstr "" |
223 | "Показывать ли список окон со всех рабочих областей или только с текущей." | |
223 | "Показывать ли список окон со всех рабочих столов или только с текущего." | |
224 | 224 | |
225 | 225 | #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27 |
226 | 226 | msgid "Show the window list on all monitors" |
234 | 234 | "Показывать ли список окон на всех подключенных мониторах или только на " |
235 | 235 | "основном." |
236 | 236 | |
237 | #: extensions/window-list/prefs.js:39 | |
237 | #: extensions/window-list/prefs.js:35 | |
238 | 238 | msgid "Window Grouping" |
239 | 239 | msgstr "Группировка окон" |
240 | 240 | |
241 | #: extensions/window-list/prefs.js:63 | |
241 | #: extensions/window-list/prefs.js:40 | |
242 | 242 | msgid "Never group windows" |
243 | 243 | msgstr "Никогда не группировать окна" |
244 | 244 | |
245 | #: extensions/window-list/prefs.js:64 | |
245 | #: extensions/window-list/prefs.js:41 | |
246 | 246 | msgid "Group windows when space is limited" |
247 | 247 | msgstr "Группировать окна, если место ограничено" |
248 | 248 | |
249 | #: extensions/window-list/prefs.js:65 | |
249 | #: extensions/window-list/prefs.js:42 | |
250 | 250 | msgid "Always group windows" |
251 | 251 | msgstr "Всегда группировать окна" |
252 | 252 | |
253 | #: extensions/window-list/prefs.js:81 | |
253 | #: extensions/window-list/prefs.js:66 | |
254 | 254 | msgid "Show on all monitors" |
255 | 255 | msgstr "Показывать на всех мониторах" |
256 | 256 | |
257 | #: extensions/window-list/workspaceIndicator.js:249 | |
258 | #: extensions/workspace-indicator/extension.js:254 | |
257 | #: extensions/window-list/workspaceIndicator.js:261 | |
258 | #: extensions/workspace-indicator/extension.js:266 | |
259 | 259 | msgid "Workspace Indicator" |
260 | msgstr "Индикатор рабочей области" | |
261 | ||
262 | #: extensions/workspace-indicator/prefs.js:33 | |
260 | msgstr "Индикатор рабочих столов" | |
261 | ||
262 | #: extensions/workspace-indicator/prefs.js:62 | |
263 | #, javascript-format | |
264 | msgid "Workspace %d" | |
265 | msgstr "Рабочий стол %d" | |
266 | ||
267 | #: extensions/workspace-indicator/prefs.js:129 | |
263 | 268 | msgid "Workspace Names" |
264 | msgstr "Названия рабочих областей" | |
265 | ||
266 | #: extensions/workspace-indicator/prefs.js:66 | |
267 | #, javascript-format | |
268 | msgid "Workspace %d" | |
269 | msgstr "Рабочая область %d" | |
270 | ||
271 | #: extensions/workspace-indicator/prefs.js:207 | |
269 | msgstr "Названия рабочих столов" | |
270 | ||
271 | #: extensions/workspace-indicator/prefs.js:255 | |
272 | 272 | msgid "Add Workspace" |
273 | msgstr "Добавить рабочую область" | |
274 | ||
273 | msgstr "Добавить рабочий стол" |