Codebase list gnome-shell-extensions / 26f0825
Import upstream version 3.38.1+git20201121.02db952 Kali Janitor 3 years ago
59 changed file(s) with 425 addition(s) and 3471 deletion(s). Raw diff Collapse all Expand all
0 ABOUT-NLS
1 Makefile
2 Makefile.in
3 Makefile.in.in
4 aclocal.m4
5 autom4te.cache/
6 config/
7 configure
8 config.log
9 config.status
10 data/*.json
11 m4/
12 po/*.header
13 po/*.sed
14 po/*.sin
15 po/Makevars.template
16 po/POTFILES
17 po/Rules-quot
18 po/gnome-shell-extensions.pot
19 po/stamp-it
20 staging/
21 zip-files/
22
23 *~
24 *.gmo
25 metadata.json
26 *.desktop
27 *.gschema.valid
28 *.session
0 #!/usr/bin/env bash
1
2 if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
3 echo This is not a merge request, skipping
4 exit 0
5 fi
6
7 git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
8
9 branch_point=$(git merge-base HEAD FETCH_HEAD)
10
11 commits=$(git log --format='format:%H' $branch_point..$CI_COMMIT_SHA)
12
13 if [ -z "$commits" ]; then
14 echo Commit range empty
15 exit 1
16 fi
17
18 JUNIT_REPORT_TESTS_FILE=$(mktemp)
19
20 function append_failed_test_case() {
21 test_name="$1"
22 commit="$2"
23 test_message="$3"
24 commit_short=${commit:0:8}
25
26 echo "<testcase name=\"$test_name: $commit_short\"><failure message=\"$commit_short: $test_message\"/></testcase>" >> $JUNIT_REPORT_TESTS_FILE
27 echo &>2 "Commit check failed: $commit_short: $test_message"
28 }
29
30 function append_passed_test_case() {
31 test_name="$1"
32 commit="$2"
33 commit_short=${commit:0:8}
34 echo "<testcase name=\"$test_name: $commit_short\"></testcase>" >> $JUNIT_REPORT_TESTS_FILE
35 }
36
37 function generate_junit_report() {
38 junit_report_file="$1"
39 num_tests=$(cat "$JUNIT_REPORT_TESTS_FILE" | wc -l)
40 num_failures=$(grep '<failure />' "$JUNIT_REPORT_TESTS_FILE" | wc -l )
41
42 echo Generating JUnit report \"$(pwd)/$junit_report_file\" with $num_tests tests and $num_failures failures.
43
44 cat > $junit_report_file << __EOF__
45 <?xml version="1.0" encoding="utf-8"?>
46 <testsuites tests="$num_tests" errors="0" failures="$num_failures">
47 <testsuite name="commit-review" tests="$num_tests" errors="0" failures="$num_failures" skipped="0">
48 $(< $JUNIT_REPORT_TESTS_FILE)
49 </testsuite>
50 </testsuites>
51 __EOF__
52 }
53
54 function commit_message_has_mr_url() {
55 commit=$1
56 commit_message=$(git show -s --format='format:%b' $commit)
57 echo "$commit_message" | grep -qe "^$CI_MERGE_REQUEST_PROJECT_URL\/\(-\/\)\?merge_requests\/$CI_MERGE_REQUEST_IID$"
58 return $?
59 }
60
61 for commit in $commits; do
62 if commit_message_has_mr_url $commit; then
63 append_failed_test_case superfluous_url $commit \
64 "Commit message must not contain a link to its own merge request"
65 else
66 append_passed_test_case superfluous_url $commit
67 fi
68 done
69
70 generate_junit_report commit-message-junit-report.xml
71
72 ! grep -q '<failure' commit-message-junit-report.xml
73 exit $?
0 include:
1 - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/7ea696055e322cc7aa4bcbe5422b56a198c4bdff/templates/ci-fairy.yml"
2
3 image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/33:2020-11-17.0
4
5 stages:
6 - pre_review
7 - review
8 - build
9
10 default:
11 # Cancel jobs if newer commits are pushed to the branch
12 interruptible: true
13 # Auto-retry jobs in case of infra failures
14 retry:
15 max: 1
16 when:
17 - 'runner_system_failure'
18 - 'stuck_or_timeout_failure'
19 - 'scheduler_failure'
20 - 'api_failure'
21
22 variables:
23 LINT_LOG: "eslint-report.xml"
24 JS_LOG: "js-report.txt"
25
26 workflow:
27 rules:
28 - if: '$CI_MERGE_REQUEST_IID'
29 - if: '$CI_COMMIT_TAG'
30 - if: '$CI_COMMIT_BRANCH'
31
32 .pipeline_guard: &pipeline_guard
33 rules:
34 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
35 - if: '$CI_COMMIT_TAG'
36 - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
37 - if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/'
38 - when: 'manual'
39
40 check_commit_log:
41 extends:
42 - .fdo.ci-fairy
43 stage: pre_review
44 script:
45 - ./.gitlab-ci/check-commit-log.sh
46 <<: *pipeline_guard
47 artifacts:
48 expire_in: 1 week
49 paths:
50 - commit-message-junit-report.xml
51 reports:
52 junit: commit-message-junit-report.xml
53
54 check-merge-request:
55 extends:
56 - .fdo.ci-fairy
57 stage: pre_review
58 script:
59 - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
60 then
61 ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ;
62 else
63 echo "Not a merge request" ;
64 fi
65 <<: *pipeline_guard
66 artifacts:
67 expire_in: 1 week
68 paths:
69 - check-merge-request-report.xml
70 reports:
71 junit: check-merge-request-report.xml
72
73 js_check:
74 stage: review
75 script:
76 - find extensions -name '*.js' -exec js78 -c '{}' ';' 2>&1 | tee $JS_LOG
77 - (! grep -q . $JS_LOG)
78 artifacts:
79 paths:
80 - ${JS_LOG}
81 when: on_failure
82
83 eslint:
84 stage: review
85 script:
86 - eslint -o $LINT_LOG -f junit extensions
87 artifacts:
88 paths:
89 - ${LINT_LOG}
90 reports:
91 junit: ${LINT_LOG}
92
93 build-bundles:
94 stage: build
95 needs: ["check_commit_log"]
96 script:
97 - ./export-zips.sh
98 artifacts:
99 name: 'Extension bundles'
100 expose_as: 'Get Extension bundles here'
101 paths:
102 - zip-files/
0 [submodule "data/gnome-shell-sass"]
1 path = data/gnome-shell-sass
2 url = https://gitlab.gnome.org/GNOME/gnome-shell-sass.git
+0
-339
data/gnome-shell-sass/COPYING less more
0 GNU GENERAL PUBLIC LICENSE
1 Version 2, June 1991
2
3 Copyright (C) 1989, 1991 Free Software Foundation, Inc. <http://fsf.org>
4 Everyone is permitted to copy and distribute verbatim copies
5 of this license document, but changing it is not allowed.
6
7 Preamble
8
9 The licenses for most software are designed to take away your
10 freedom to share and change it. By contrast, the GNU General Public
11 License is intended to guarantee your freedom to share and change free
12 software--to make sure the software is free for all its users. This
13 General Public License applies to most of the Free Software
14 Foundation's software and to any other program whose authors commit to
15 using it. (Some other Free Software Foundation software is covered by
16 the GNU Library General Public License instead.) You can apply it to
17 your programs, too.
18
19 When we speak of free software, we are referring to freedom, not
20 price. Our General Public Licenses are designed to make sure that you
21 have the freedom to distribute copies of free software (and charge for
22 this service if you wish), that you receive source code or can get it
23 if you want it, that you can change the software or use pieces of it
24 in new free programs; and that you know you can do these things.
25
26 To protect your rights, we need to make restrictions that forbid
27 anyone to deny you these rights or to ask you to surrender the rights.
28 These restrictions translate to certain responsibilities for you if you
29 distribute copies of the software, or if you modify it.
30
31 For example, if you distribute copies of such a program, whether
32 gratis or for a fee, you must give the recipients all the rights that
33 you have. You must make sure that they, too, receive or can get the
34 source code. And you must show them these terms so they know their
35 rights.
36
37 We protect your rights with two steps: (1) copyright the software, and
38 (2) offer you this license which gives you legal permission to copy,
39 distribute and/or modify the software.
40
41 Also, for each author's protection and ours, we want to make certain
42 that everyone understands that there is no warranty for this free
43 software. If the software is modified by someone else and passed on, we
44 want its recipients to know that what they have is not the original, so
45 that any problems introduced by others will not reflect on the original
46 authors' reputations.
47
48 Finally, any free program is threatened constantly by software
49 patents. We wish to avoid the danger that redistributors of a free
50 program will individually obtain patent licenses, in effect making the
51 program proprietary. To prevent this, we have made it clear that any
52 patent must be licensed for everyone's free use or not licensed at all.
53
54 The precise terms and conditions for copying, distribution and
55 modification follow.
56
57 GNU GENERAL PUBLIC LICENSE
58 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
59
60 0. This License applies to any program or other work which contains
61 a notice placed by the copyright holder saying it may be distributed
62 under the terms of this General Public License. The "Program", below,
63 refers to any such program or work, and a "work based on the Program"
64 means either the Program or any derivative work under copyright law:
65 that is to say, a work containing the Program or a portion of it,
66 either verbatim or with modifications and/or translated into another
67 language. (Hereinafter, translation is included without limitation in
68 the term "modification".) Each licensee is addressed as "you".
69
70 Activities other than copying, distribution and modification are not
71 covered by this License; they are outside its scope. The act of
72 running the Program is not restricted, and the output from the Program
73 is covered only if its contents constitute a work based on the
74 Program (independent of having been made by running the Program).
75 Whether that is true depends on what the Program does.
76
77 1. You may copy and distribute verbatim copies of the Program's
78 source code as you receive it, in any medium, provided that you
79 conspicuously and appropriately publish on each copy an appropriate
80 copyright notice and disclaimer of warranty; keep intact all the
81 notices that refer to this License and to the absence of any warranty;
82 and give any other recipients of the Program a copy of this License
83 along with the Program.
84
85 You may charge a fee for the physical act of transferring a copy, and
86 you may at your option offer warranty protection in exchange for a fee.
87
88 2. You may modify your copy or copies of the Program or any portion
89 of it, thus forming a work based on the Program, and copy and
90 distribute such modifications or work under the terms of Section 1
91 above, provided that you also meet all of these conditions:
92
93 a) You must cause the modified files to carry prominent notices
94 stating that you changed the files and the date of any change.
95
96 b) You must cause any work that you distribute or publish, that in
97 whole or in part contains or is derived from the Program or any
98 part thereof, to be licensed as a whole at no charge to all third
99 parties under the terms of this License.
100
101 c) If the modified program normally reads commands interactively
102 when run, you must cause it, when started running for such
103 interactive use in the most ordinary way, to print or display an
104 announcement including an appropriate copyright notice and a
105 notice that there is no warranty (or else, saying that you provide
106 a warranty) and that users may redistribute the program under
107 these conditions, and telling the user how to view a copy of this
108 License. (Exception: if the Program itself is interactive but
109 does not normally print such an announcement, your work based on
110 the Program is not required to print an announcement.)
111
112 These requirements apply to the modified work as a whole. If
113 identifiable sections of that work are not derived from the Program,
114 and can be reasonably considered independent and separate works in
115 themselves, then this License, and its terms, do not apply to those
116 sections when you distribute them as separate works. But when you
117 distribute the same sections as part of a whole which is a work based
118 on the Program, the distribution of the whole must be on the terms of
119 this License, whose permissions for other licensees extend to the
120 entire whole, and thus to each and every part regardless of who wrote it.
121
122 Thus, it is not the intent of this section to claim rights or contest
123 your rights to work written entirely by you; rather, the intent is to
124 exercise the right to control the distribution of derivative or
125 collective works based on the Program.
126
127 In addition, mere aggregation of another work not based on the Program
128 with the Program (or with a work based on the Program) on a volume of
129 a storage or distribution medium does not bring the other work under
130 the scope of this License.
131
132 3. You may copy and distribute the Program (or a work based on it,
133 under Section 2) in object code or executable form under the terms of
134 Sections 1 and 2 above provided that you also do one of the following:
135
136 a) Accompany it with the complete corresponding machine-readable
137 source code, which must be distributed under the terms of Sections
138 1 and 2 above on a medium customarily used for software interchange; or,
139
140 b) Accompany it with a written offer, valid for at least three
141 years, to give any third party, for a charge no more than your
142 cost of physically performing source distribution, a complete
143 machine-readable copy of the corresponding source code, to be
144 distributed under the terms of Sections 1 and 2 above on a medium
145 customarily used for software interchange; or,
146
147 c) Accompany it with the information you received as to the offer
148 to distribute corresponding source code. (This alternative is
149 allowed only for noncommercial distribution and only if you
150 received the program in object code or executable form with such
151 an offer, in accord with Subsection b above.)
152
153 The source code for a work means the preferred form of the work for
154 making modifications to it. For an executable work, complete source
155 code means all the source code for all modules it contains, plus any
156 associated interface definition files, plus the scripts used to
157 control compilation and installation of the executable. However, as a
158 special exception, the source code distributed need not include
159 anything that is normally distributed (in either source or binary
160 form) with the major components (compiler, kernel, and so on) of the
161 operating system on which the executable runs, unless that component
162 itself accompanies the executable.
163
164 If distribution of executable or object code is made by offering
165 access to copy from a designated place, then offering equivalent
166 access to copy the source code from the same place counts as
167 distribution of the source code, even though third parties are not
168 compelled to copy the source along with the object code.
169
170 4. You may not copy, modify, sublicense, or distribute the Program
171 except as expressly provided under this License. Any attempt
172 otherwise to copy, modify, sublicense or distribute the Program is
173 void, and will automatically terminate your rights under this License.
174 However, parties who have received copies, or rights, from you under
175 this License will not have their licenses terminated so long as such
176 parties remain in full compliance.
177
178 5. You are not required to accept this License, since you have not
179 signed it. However, nothing else grants you permission to modify or
180 distribute the Program or its derivative works. These actions are
181 prohibited by law if you do not accept this License. Therefore, by
182 modifying or distributing the Program (or any work based on the
183 Program), you indicate your acceptance of this License to do so, and
184 all its terms and conditions for copying, distributing or modifying
185 the Program or works based on it.
186
187 6. Each time you redistribute the Program (or any work based on the
188 Program), the recipient automatically receives a license from the
189 original licensor to copy, distribute or modify the Program subject to
190 these terms and conditions. You may not impose any further
191 restrictions on the recipients' exercise of the rights granted herein.
192 You are not responsible for enforcing compliance by third parties to
193 this License.
194
195 7. If, as a consequence of a court judgment or allegation of patent
196 infringement or for any other reason (not limited to patent issues),
197 conditions are imposed on you (whether by court order, agreement or
198 otherwise) that contradict the conditions of this License, they do not
199 excuse you from the conditions of this License. If you cannot
200 distribute so as to satisfy simultaneously your obligations under this
201 License and any other pertinent obligations, then as a consequence you
202 may not distribute the Program at all. For example, if a patent
203 license would not permit royalty-free redistribution of the Program by
204 all those who receive copies directly or indirectly through you, then
205 the only way you could satisfy both it and this License would be to
206 refrain entirely from distribution of the Program.
207
208 If any portion of this section is held invalid or unenforceable under
209 any particular circumstance, the balance of the section is intended to
210 apply and the section as a whole is intended to apply in other
211 circumstances.
212
213 It is not the purpose of this section to induce you to infringe any
214 patents or other property right claims or to contest validity of any
215 such claims; this section has the sole purpose of protecting the
216 integrity of the free software distribution system, which is
217 implemented by public license practices. Many people have made
218 generous contributions to the wide range of software distributed
219 through that system in reliance on consistent application of that
220 system; it is up to the author/donor to decide if he or she is willing
221 to distribute software through any other system and a licensee cannot
222 impose that choice.
223
224 This section is intended to make thoroughly clear what is believed to
225 be a consequence of the rest of this License.
226
227 8. If the distribution and/or use of the Program is restricted in
228 certain countries either by patents or by copyrighted interfaces, the
229 original copyright holder who places the Program under this License
230 may add an explicit geographical distribution limitation excluding
231 those countries, so that distribution is permitted only in or among
232 countries not thus excluded. In such case, this License incorporates
233 the limitation as if written in the body of this License.
234
235 9. The Free Software Foundation may publish revised and/or new versions
236 of the General Public License from time to time. Such new versions will
237 be similar in spirit to the present version, but may differ in detail to
238 address new problems or concerns.
239
240 Each version is given a distinguishing version number. If the Program
241 specifies a version number of this License which applies to it and "any
242 later version", you have the option of following the terms and conditions
243 either of that version or of any later version published by the Free
244 Software Foundation. If the Program does not specify a version number of
245 this License, you may choose any version ever published by the Free Software
246 Foundation.
247
248 10. If you wish to incorporate parts of the Program into other free
249 programs whose distribution conditions are different, write to the author
250 to ask for permission. For software which is copyrighted by the Free
251 Software Foundation, write to the Free Software Foundation; we sometimes
252 make exceptions for this. Our decision will be guided by the two goals
253 of preserving the free status of all derivatives of our free software and
254 of promoting the sharing and reuse of software generally.
255
256 NO WARRANTY
257
258 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
259 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
260 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
261 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
262 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
263 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
264 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
265 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
266 REPAIR OR CORRECTION.
267
268 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
269 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
270 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
271 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
272 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
273 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
274 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
275 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
276 POSSIBILITY OF SUCH DAMAGES.
277
278 END OF TERMS AND CONDITIONS
279
280 How to Apply These Terms to Your New Programs
281
282 If you develop a new program, and you want it to be of the greatest
283 possible use to the public, the best way to achieve this is to make it
284 free software which everyone can redistribute and change under these terms.
285
286 To do so, attach the following notices to the program. It is safest
287 to attach them to the start of each source file to most effectively
288 convey the exclusion of warranty; and each file should have at least
289 the "copyright" line and a pointer to where the full notice is found.
290
291 <one line to give the program's name and a brief idea of what it does.>
292 Copyright (C) <year> <name of author>
293
294 This program is free software; you can redistribute it and/or modify
295 it under the terms of the GNU General Public License as published by
296 the Free Software Foundation; either version 2 of the License, or
297 (at your option) any later version.
298
299 This program is distributed in the hope that it will be useful,
300 but WITHOUT ANY WARRANTY; without even the implied warranty of
301 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
302 GNU General Public License for more details.
303
304 You should have received a copy of the GNU General Public License
305 along with this program; if not, write to the Free Software
306 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
307
308
309 Also add information on how to contact you by electronic and paper mail.
310
311 If the program is interactive, make it output a short notice like this
312 when it starts in an interactive mode:
313
314 Gnomovision version 69, Copyright (C) year name of author
315 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
316 This is free software, and you are welcome to redistribute it
317 under certain conditions; type `show c' for details.
318
319 The hypothetical commands `show w' and `show c' should show the appropriate
320 parts of the General Public License. Of course, the commands you use may
321 be called something other than `show w' and `show c'; they could even be
322 mouse-clicks or menu items--whatever suits your program.
323
324 You should also get your employer (if you work as a programmer) or your
325 school, if any, to sign a "copyright disclaimer" for the program, if
326 necessary. Here is a sample; alter the names:
327
328 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
329 `Gnomovision' (which makes passes at compilers) written by James Hacker.
330
331 <signature of Ty Coon>, 1 April 1989
332 Ty Coon, President of Vice
333
334 This General Public License does not permit incorporating your program into
335 proprietary programs. If your program is a subroutine library, you may
336 consider it more useful to permit linking proprietary applications with the
337 library. If this is what you want to do, use the GNU Library General
338 Public License instead of this License.
+0
-0
data/gnome-shell-sass/NEWS less more
(Empty file)
+0
-16
data/gnome-shell-sass/README.md less more
0 # GNOME Shell Sass
1 GNOME Shell Sass is a project intended to allow the sharing of the
2 theme sources in sass between gnome-shell and other projects like
3 gnome-shell-extensions.
4
5 Any changes should be done in the [GNOME Shell subtree][shell-subtree]
6 and not the stand-alone [gnome-shell-sass repository][sass-repo]. They
7 will then be synchronized periodically before releases.
8
9 ## License
10 GNOME Shell Sass is distributed under the terms of the GNU General Public
11 License, version 2 or later. See the [COPYING][license] file for details.
12
13 [shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/master/data/theme/gnome-shell-sass
14 [sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass
15 [license]: COPYING
+0
-43
data/gnome-shell-sass/_colors.scss less more
0 // When color definition differs for dark and light variant,
1 // it gets @if ed depending on $variant
2
3 $base_color: if($variant == 'light', #fff, lighten(desaturate(#241f31, 20%), 2%));
4 $bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
5 $fg_color: if($variant == 'light', #2e3436, #eeeeec);
6
7 $selected_fg_color: #fff;
8 $selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
9 $selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
10 $borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 8%));
11 $borders_edge: if($variant == 'light', rgba(255,255,255,0.8), transparentize($fg_color, 0.93));
12 $link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
13 $link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
14 $top_hilight: $borders_edge;
15
16 $warning_color: #f57900;
17 $error_color: #ff8080;
18 $success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
19 $destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
20
21 $osd_fg_color: #eeeeec;
22 $osd_text_color: white;
23 $osd_bg_color: transparentize(darken(desaturate(#3d3846, 100%), 12%),0.04);
24 $osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
25 $osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
26 $osd_borders_color: transparentize(black, 0.3);
27 $osd_outer_borders_color: transparentize(white, 0.84);
28
29 $shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
30
31 //insensitive state derived colors
32 $insensitive_fg_color: mix($fg_color, $bg_color, 50%);
33 $insensitive_bg_color: mix($bg_color, $base_color, 60%);
34 $insensitive_borders_color: mix($borders_color, $base_color, 60%);
35
36 //colors for the backdrop state, derived from the main colors.
37 $backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
38 $backdrop_bg_color: $bg_color;
39 $backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
40 $backdrop_insensitive_color: if($variant =='light', darken($backdrop_bg_color,15%), lighten($backdrop_bg_color,15%));
41 $backdrop_borders_color: mix($borders_color, $bg_color, 90%);
42 $backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+0
-177
data/gnome-shell-sass/_common.scss less more
0 //This is the RIGHT PLACE to edit the stylesheet
1
2 //let's start by telling people not to edit the generated CSS:
3 $cakeisalie: "This stylesheet is generated, DO NOT EDIT";
4 /* #{$cakeisalie} */
5
6 /* Copyright 2009, 2015 Red Hat, Inc.
7 *
8 * Portions adapted from Mx's data/style/default.css
9 * Copyright 2009 Intel Corporation
10 *
11 * This program is free software; you can redistribute it and/or modify it
12 * under the terms and conditions of the GNU Lesser General Public License,
13 * version 2.1, as published by the Free Software Foundation.
14 *
15 * This program is distributed in the hope it will be useful, but WITHOUT ANY
16 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
18 * more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with this program; if not, write to the Free Software Foundation,
22 * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
23 */
24
25 /* Global Values */
26
27 // padding, margin and spacing
28 $base_padding: 6px;
29 $base_margin: 4px;
30 $base_spacing: 6px;
31
32 // border radii
33 $base_border_radius: 5px;
34
35 $modal_radius:$base_border_radius * 2;
36
37 // non-standard colors
38 $bubble_borders_color: lighten($borders_color, if($variant=='light', 0%, 5%));
39 // $bubble_borders_color: if($variant == 'light', rgba(255,255,255,0.1), rgba(0,0,0,0.3));
40
41 // hover
42 $hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 5%));
43 $hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 5%));
44 $hover_borders_color: lighten($borders_color,if($variant=='light', 5%, 3%));
45
46 // active
47 $active_bg_color: if($variant == 'light', darken($bg_color, 7%), darken($bg_color, 9%));
48 $active_fg_color: darken($fg_color,if($variant=='light', 5%, 3%));
49 $active_borders_color: darken($borders_color,if($variant=='light', 5%, 3%));
50
51 // fonts
52 $base_font_size: 11;
53 $text_shadow_color: if($variant == 'light', rgba(255,255,255,0.3), rgba(0,0,0,0.2));
54
55 // icons
56 $base_icon_size: 1.09em;
57 // $base_icon_size: 16px;
58
59 // Stage
60 stage {
61 @include fontsize($base_font_size);
62 color: $fg_color;
63 }
64
65 /* Common Stylings */
66
67 // Text
68 %status_text {
69 font-size: 2em;
70 font-weight: bold;
71 color: $osd_fg_color;
72 }
73
74 // osd panels
75 %osd_panel {
76 color: $osd_fg_color;
77 background-color: $osd_bg_color;
78 border: 1px solid $osd_outer_borders_color;
79 border-radius: $base_border_radius * 2 + 4px;
80 padding: $base_padding * 2;
81 }
82
83 // Overview panels
84 // for the dash and workspace switcher
85 %overview_panel {
86 color: $osd_fg_color;
87 background-color: transparentize($osd_bg_color, 0.2);
88 border: 1px solid $osd_outer_borders_color;
89 }
90
91 // icon tiles
92 %icon_tile {
93 border-radius: $base_border_radius + 4px;
94 padding: $base_padding;
95 border: 2px solid transparent;
96 transition-duration: 100ms;
97 text-align: center;
98 }
99
100 // dialogs
101 %bubble_panel {
102 color: $fg_color;
103 background-color: $bg_color;
104 border: 1px solid if($variant=='light', rgba(0,0,0, 0.6), $borders_color);
105 }
106
107 // button styling
108 %button {
109 border-radius: $base_border_radius;
110 border-style: solid;
111 border-width: 1px;
112 min-height: 22px;
113 padding: $base_padding * 0.5 $base_padding * 4;
114
115 @include button(normal);
116 &:focus { @include button(focus);}
117 &:hover { @include button(hover);}
118 &:insensitive { @include button(insensitive);}
119 &:active { @include button(active);}
120 }
121
122 // buttons in dialogs
123 %bubble_button {
124 @include button(normal, $shadow: none);
125 padding: $base_padding * 2;
126 border-style: solid;
127 border-width: 1px;
128 border-left-width: 0;
129 border-bottom-width: 0;
130
131 &:insensitive { @include button(insensitive, $shadow: none); }
132 &:hover { @include button(hover, $shadow: none); }
133 &:focus { @include button(focus, $shadow: none); }
134 &:active { @include button(active, $shadow: none); }
135
136 // radius is 2 pixel less to fit in bubble
137 &:first-child {
138 border-radius: 0 0 0 $modal_radius - 2px;
139 }
140
141 &:last-child {
142 border-right-width: 0;
143 border-radius: 0 0 $modal_radius - 2px 0;
144 }
145
146 &:first-child:last-child {
147 border-radius: 0 0 $modal_radius - 2px $modal_radius - 2px;
148 }
149 }
150
151
152 // notification styling
153 @mixin notification_bubble($flat: false) {
154 border-width: 1px;
155 border-style: solid;
156 border-radius: $base_border_radius + 2px;
157 margin: $base_margin;
158
159 @if $flat {
160 @include button(undecorated);
161 } @else {
162 @include button(normal);
163 }
164
165 &:focus {
166 @include button(focus);
167 }
168
169 &:hover {
170 @include button(hover);
171 }
172
173 &:active {
174 @include button(active);
175 }
176 }
+0
-231
data/gnome-shell-sass/_drawing.scss less more
0 // Drawing mixins
1
2 // generic drawing of more complex things
3
4 @function draw_widget_edge($c:$borders_edge) {
5 // outer highlight "used" on most widgets
6 @return 0 1px $c;
7 }
8
9 // provide font size in rem, with px fallback
10 @mixin fontsize($size: 24, $base: 16) {
11 font-size: round($size) + pt;
12 //font-size: ($size / $base) * 1rem;
13 }
14
15 @mixin draw_shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
16 //
17 // Helper function to stack up to 4 box-shadows;
18 //
19 @if $shadow4!=none { box-shadow: $shadow1, $shadow2, $shadow3, $shadow4; }
20 @else if $shadow3!=none { box-shadow: $shadow1, $shadow2, $shadow3; }
21 @else if $shadow2!=none { box-shadow: $shadow1, $shadow2; }
22 @else { box-shadow: $shadow1; }
23 }
24
25 // entries
26
27 @mixin entry($t, $fc:$selected_bg_color, $edge: $borders_edge) {
28 //
29 // Entries drawing function
30 //
31 // $t: entry type
32 // $fc: focus color
33 // $edge: set to none to not draw the bottom edge or specify a color to not use the default one
34 //
35 // possible $t values:
36 // normal, focus, insensitive
37 //
38
39 @if $t==normal {
40 background-color: $base_color;
41 border-color: $borders_color;
42
43 }
44 @if $t==focus {
45 border-color: if($fc==$selected_bg_color,
46 $selected_borders_color,
47 darken($fc,35%));
48 box-shadow: inset 0 0 0 1px $fc;
49 }
50 @if $t==hover { }
51 @if $t==insensitive {
52 color: $insensitive_fg_color;
53 border-color: $insensitive_bg_color;
54 box-shadow: none;
55 }
56 }
57
58 // buttons
59
60 @function draw_border_color ($c) {
61 //
62 // colored buttons want the border form the base color
63 //
64 @return if($variant == 'light', darken($c, 18%), darken($c, 4%));
65 }
66
67 @function draw_text_shadow_color ($tc:$fg_color, $bg:$bg_color) {
68 //
69 // calculate the color of text shadows
70 //
71 // $tc is the text color
72 // $bg is the background color
73 //
74 $lbg: lightness($bg)/100%;
75 @if lightness($tc)<50% { @return rgba(255,255,255,$lbg/($lbg*1.3)); }
76 @else { @return rgba(0,0,0,1-$lbg*0.8); }
77 }
78
79 @function draw_button_hilight_color($c) {
80 //
81 // calculate the right top highlight color for buttons
82 //
83 // $c: base color;
84 //
85 @if lightness($c)>90% { @return white; }
86 @else if lightness($c)>80% { @return rgba(255,255,255, 0.7); }
87 @else if lightness($c)>50% { @return rgba(255,255,255, 0.5); }
88 @else if lightness($c)>40% { @return rgba(255,255,255, 0.3); }
89 @else { @return rgba(255,255,255, 0.1); }
90 }
91
92 @mixin draw_button_text_shadow ($tc:$fg_color, $bg:$bg_color) {
93 //
94 // helper function for the text emboss effect
95 //
96 // $tc is the optional text color, not the shadow color
97 //
98 // TODO: this functions needs a way to deal with special cases
99 //
100
101 $shadow: draw_text_shadow_color($tc, $bg);
102
103 @if lightness($tc)<50% {
104 text-shadow: 0 1px $shadow;
105 icon-shadow: 0 1px $shadow;
106 }
107 @else {
108 text-shadow: 0 -1px $shadow;
109 icon-shadow: 0 -1px $shadow;
110 }
111 }
112
113 @mixin button($t, $c:$bg_color, $tc:$fg_color, $edge: $borders_edge, $shadow: $shadow_color) {
114 //
115 // Button drawing function
116 //
117 // $t: button type,
118 // $c: base button color for colored* types
119 // $tc: optional text color for colored* types
120 // $edge: set to none to not draw the bottom edge or specify a color to not
121 // use the default one
122 // $shadow: set to none to not draw the drop shadow or specify a color to not
123 // use the default one
124 //
125 // possible $t values:
126 // normal, hover, active, insensitive, insensitive-active,
127 // backdrop, backdrop-active, backdrop-insensitive, backdrop-insensitive-active,
128 // osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
129 //
130
131 $hilight_color: draw_button_hilight_color($c);
132 $button_edge: if($edge == none, none, draw_widget_edge($edge));
133 $blank_edge: if($edge == none, none, draw_widget_edge(transparentize($edge,1)));
134 $button_shadow: if($shadow == none, none, 0 1px 1px 0 $shadow);
135
136 // normal button
137 @if $t==normal {
138 color: $tc;
139 background-color: lighten($c, 3%);
140 border-color: draw_border_color($c);
141 @include draw_shadows($button_shadow);
142 // box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
143 text-shadow: 0 1px $text_shadow_color;
144 icon-shadow: 0 1px $text_shadow_color;
145 }
146
147 // focused button
148 @if $t==focus {
149 color: $tc;
150 text-shadow: 0 1px $text_shadow_color;
151 icon-shadow: 0 1px $text_shadow_color;
152 box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
153 //border-color: $selected_bg_color;
154 }
155
156 // hover button
157 @else if $t==hover {
158 color: $tc;
159 background-color: lighten($c, if($variant == 'light', 8%, 5%));
160 border-color: if($variant == 'light', draw_border_color(lighten($c, 7%)), draw_border_color($c));
161 @include draw_shadows($button_shadow);
162 text-shadow: 0 1px $text_shadow_color;
163 icon-shadow: 0 1px $text_shadow_color;
164 }
165
166 // active button
167 @else if $t==active {
168 color: $tc;
169 background-color: darken($c,3%);
170 border-color: draw_border_color(if($variant == 'light', $c, darken($c,7%)));
171 text-shadow: none;
172 icon-shadow: none;
173 box-shadow: none;
174 }
175
176 // insensitive button
177 @else if $t==insensitive {
178 color: $insensitive_fg_color;
179 border-color: $insensitive_borders_color;
180 background-color: $insensitive_bg_color;
181 box-shadow: none;
182 text-shadow: none;
183 icon-shadow: none;
184 }
185
186 // reset
187 @else if $t==undecorated {
188 border-color: transparent;
189 background-color: transparent;
190 background-image: none;
191 @include draw_shadows(inset 0 1px rgba(255,255,255,0),$blank_edge);
192 text-shadow: none;
193 icon-shadow: none;
194 }
195 }
196
197 // overview icons
198 @mixin overview-icon($color) {
199 .overview-icon {
200 @extend %icon_tile;
201 color: $color;
202 }
203
204 &:hover,
205 &:selected {
206 .overview-icon {
207 background-color: transparentize($color, .9);
208 }
209 }
210
211 &:focus {
212 .overview-icon {
213 background-color: transparentize($color, .7);
214 // border-color: $selected_bg_color;
215 }
216 }
217
218 &:drop {
219 .overview-icon {
220 background-color: transparentize($selected_bg_color, .15);
221 }
222 }
223
224 &:active,
225 &:checked {
226 .overview-icon {
227 background-color: transparentize(darken($osd_bg_color, 10%), .5);
228 }
229 }
230 }
+0
-41
data/gnome-shell-sass/_high-contrast-colors.scss less more
0 // When color definition differs for dark and light variant,
1 // it gets @if ed depending on $variant
2
3
4 $base_color: #222;
5 $bg_color: #000;
6 $fg_color: #fff;
7
8 $selected_fg_color: #ffffff;
9 $selected_bg_color: darken(#4a90d9,20%);
10 $selected_borders_color: darken($selected_bg_color, 20%);
11 $borders_color: darken($bg_color,12%);
12 $borders_edge: transparentize($fg_color, 0.9);
13 $link_color: lighten($selected_bg_color,20%);
14 $link_visited_color: lighten($selected_bg_color,10%);
15 $top_hilight: $borders_edge;
16
17 $warning_color: #f57900;
18 $error_color: #cc0000;
19 $success_color: darken(#73d216,10%);
20 $destructive_color: darken(#ef2929,10%);
21
22 $osd_fg_color: #eeeeec;
23 $osd_bg_color: #2e3436;
24 $osd_borders_color: rgba(0,0,0, 0.7);
25 $osd_outer_borders_color: rgba(255,255,255, 0.1);
26
27 $shadow_color: rgba(0,0,0, 0.1);
28
29 //insensitive state derived colors
30 $insensitive_fg_color: mix($fg_color, $bg_color, 50%);
31 $insensitive_bg_color: mix($bg_color, $base_color, 60%);
32 $insensitive_borders_color: $borders_color;
33
34 //colors for the backdrop state, derived from the main colors.
35 $backdrop_base_color: lighten($base_color,1%);
36 $backdrop_bg_color: $bg_color;
37 $backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
38 $backdrop_insensitive_color: lighten($backdrop_bg_color,15%);
39 $backdrop_borders_color: mix($borders_color, $bg_color, 90%);
40 $backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+0
-51
data/gnome-shell-sass/_widgets.scss less more
0 //
1 // Shell widgets stylesheets are placed in separate .scss files
2 // in 'widgets' and imported into the main stylesheet in this file.
3 // To create or update a widget for the shell modify the list below.
4 //
5
6 /* WIDGETS */
7
8 // Primary widgets
9 @import 'widgets/base';
10 @import 'widgets/entries';
11 @import 'widgets/buttons';
12 @import 'widgets/check-box';
13 @import 'widgets/switches';
14 @import 'widgets/slider';
15 @import 'widgets/scrollbars';
16 // Popovers
17 @import 'widgets/popovers';
18 @import 'widgets/calendar';
19 @import 'widgets/message-list';
20 @import 'widgets/ibus-popup';
21 // Notifications
22 @import 'widgets/notifications';
23 @import 'widgets/hotplug';
24 // Dialogs
25 @import 'widgets/dialogs';
26 @import 'widgets/network-dialog';
27 // OSDs
28 @import 'widgets/osd';
29 @import 'widgets/switcher-popup';
30 @import 'widgets/workspace-switcher';
31 // Panel
32 @import 'widgets/panel';
33 @import 'widgets/corner-ripple';
34 // Overview
35 @import 'widgets/overview';
36 @import 'widgets/window-picker';
37 @import 'widgets/search-entry';
38 @import 'widgets/search-results';
39 @import 'widgets/app-grid';
40 @import 'widgets/dash';
41 @import 'widgets/workspace-thumbnails';
42 // A11y / misc
43 @import 'widgets/a11y';
44 @import 'widgets/misc';
45 @import 'widgets/tiled-previews';
46 @import 'widgets/keyboard';
47 @import 'widgets/looking-glass';
48 // Lock / login screens
49 @import 'widgets/login-dialog';
50 @import 'widgets/screen-shield';
+0
-37
data/gnome-shell-sass/gnome-shell-sass.doap less more
0 <Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
2 xmlns:foaf="http://xmlns.com/foaf/0.1/"
3 xmlns:gnome="http://api.gnome.org/doap-extensions#"
4 xmlns="http://usefulinc.com/ns/doap#">
5
6 <name xml:lang="en">GNOME Shell Sass</name>
7 <shortdesc xml:lang="en">Sass sources of GNOME Shell</shortdesc>
8 <description>GNOME Shell Sass is a project intended to allow the sharing of the
9 sass theme sources between gnome-shell and other projects like gnome-shell-extensions.</description>
10
11 <category rdf:resource="http://api.gnome.org/doap-extensions#core" />
12 <programming-language>sass</programming-language>
13 <programming-language>css</programming-language>
14
15 <maintainer>
16 <foaf:Person>
17 <foaf:name>Carlos Soriano</foaf:name>
18 <foaf:mbox rdf:resource="mailto:[email protected]" />
19 <gnome:userid>csoriano</gnome:userid>
20 </foaf:Person>
21 </maintainer>
22 <maintainer>
23 <foaf:Person>
24 <foaf:name>Florian Müllner</foaf:name>
25 <foaf:mbox rdf:resource="mailto:[email protected]" />
26 <gnome:userid>fmuellner</gnome:userid>
27 </foaf:Person>
28 </maintainer>
29 <maintainer>
30 <foaf:Person>
31 <foaf:name>Jakub Steiner</foaf:name>
32 <foaf:mbox rdf:resource="mailto:[email protected]" />
33 <gnome:userid>jimmac</gnome:userid>
34 </foaf:Person>
35 </maintainer>
36 </Project>
+0
-24
data/gnome-shell-sass/widgets/_a11y.scss less more
0 // Pointer location
1 .ripple-pointer-location {
2 width: $ripple_size;
3 height: $ripple_size;
4 border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve
5 background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
6 box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
7 }
8
9 // Pointer accessibility notifications
10 .pie-timer {
11 width: 60px;
12 height: 60px;
13 -pie-border-width: 3px;
14 -pie-border-color: $selected_bg_color;
15 -pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
16 }
17
18 // Screen zoom/Magnifier
19 .magnifier-zoom-region {
20 border: 2px solid $selected_bg_color;
21
22 &.full-screen { border-width: 0; }
23 }
+0
-144
data/gnome-shell-sass/widgets/_app-grid.scss less more
0 /* App Grid */
1
2 $app_icon_size: 96px;
3
4 // app icons
5 .icon-grid {
6 row-spacing: $base_spacing * 6;
7 column-spacing: $base_spacing * 6;
8 max-row-spacing: $base_spacing * 12;
9 max-column-spacing: $base_spacing * 12;
10 }
11
12 /* App Icons */
13
14 $app_grid_fg_color: #fff;
15
16 // Icon tiles in the app grid
17 .app-well-app,
18 %app-well-app {
19 @include overview-icon($app_grid_fg_color);
20
21 .overview-icon.overview-icon-with-label {
22 padding: 10px 8px 5px 8px;
23
24 > StBoxLayout {
25 spacing: $base_spacing;
26 }
27 }
28 }
29
30 /* App Folders */
31 .app-well-app.app-folder {
32 background-color: transparentize($osd_bg_color, 0.8);
33 border-radius: $base_border_radius + 4px; // same as %icon_tile
34 }
35
36 // expanded folder
37 .app-folder-dialog {
38 border-radius: $modal_radius * 1.5;
39 border: 1px solid $osd_outer_borders_color;
40 background-color: transparentize(darken($osd_bg_color,10%), 0.05);
41 padding: 12px;
42
43 & .folder-name-container {
44 padding: 24px 36px 0;
45 spacing: 12px;
46
47 & .folder-name-label,
48 & .folder-name-entry {
49 font-size: 18pt;
50 font-weight: 800;
51 }
52
53 & .folder-name-entry { width: 300px }
54
55 /* FIXME: this is to keep the label in sync with the entry */
56 & .folder-name-label { padding: 5px 7px; color: $osd_fg_color; }
57
58 & .edit-folder-button {
59 @extend %button;
60
61 padding: 0;
62 width: 36px;
63 height: 36px;
64 border-radius: 18px;
65
66 & > StIcon { icon-size: 16px }
67 }
68 }
69
70 & .icon-grid {
71 row-spacing: $base_spacing * 2;
72 column-spacing: $base_spacing * 5;
73 }
74
75 & .page-indicators {
76 margin-bottom: 18px;
77
78 .page-indicator {
79 padding: 15px 12px;
80 }
81 }
82 }
83 .app-folder-dialog-container {
84 padding: 12px;
85 width: 620px;
86 height: 620px;
87 }
88
89 .app-folder-icon {
90 padding: $base_padding;
91 spacing-rows: $base_spacing;
92 spacing-columns: $base_spacing;
93 }
94
95
96 // Running app indicator (also shown in dash)
97 .app-well-app-running-dot {
98 height: 5px;
99 width: 5px;
100 border-radius:5px;
101 background-color: $osd_fg_color;
102 margin-bottom: 1px;
103 }
104
105 // Rename popup for app folders
106 .rename-folder-popup {
107 .rename-folder-popup-item {
108 spacing: $base_spacing;
109 &:ltr, &:rtl { padding: 0 $base_padding * 2; }
110 }
111 }
112
113 // right-click app menu
114 .app-menu,
115 .app-well-menu {
116 max-width: 27.25em;
117 }
118
119 // App Grid pagination indicators
120 .page-indicator {
121 padding: 15px 20px;
122
123 .page-indicator-icon {
124 width: 10px;
125 height: 10px;
126 border-radius: 10px; // the same as height&width
127 background-color: white;
128 }
129 }
130
131 // Some hacks I don't even know
132 .all-apps {
133 // horizontal padding to make sure scrollbars or dash don't overlap content
134 padding: 0px 88px 10px 88px;
135 }
136
137 // shutdown and other actions in the grid
138 .system-action-icon {
139 background-color: rgba(0,0,0,0.8);
140 color: #fff;
141 border-radius: 99px;
142 icon-size: $app_icon_size * 0.5;
143 }
+0
-18
data/gnome-shell-sass/widgets/_base.scss less more
0 // Links
1 .shell-link {
2 color: $link_color;
3
4 &:hover {
5 color: lighten($link_color, 10%);
6 }
7 }
8
9 // Outline for low res icons
10 .lowres-icon {
11 icon-shadow: 0 1px 2px rgba(black, 0.3);
12 }
13
14 // Dropshadow for large icons
15 .icon-dropshadow {
16 icon-shadow: 0 1px 2px rgba(black, 0.4);
17 }
+0
-5
data/gnome-shell-sass/widgets/_buttons.scss less more
0 /* Buttons */
1
2 .button {
3 @extend %button; // that's it
4 }
+0
-291
data/gnome-shell-sass/widgets/_calendar.scss less more
0 /* Date/Time Menu */
1
2 .clock-display-box {
3 spacing: $base_spacing / 2;
4
5 .clock {
6 padding-left: $base_padding;
7 padding-right: $base_padding;
8 }
9 }
10
11 // overall menu
12 #calendarArea {
13 padding:0;
14 }
15
16 // Calendar menu side column
17 .datemenu-calendar-column {
18 spacing: $base_spacing;
19 border: 0 solid $bubble_borders_color;
20 padding: 0 $base_padding * 2;
21
22 &:ltr {margin-right: $base_margin * 2; border-left-width: 1px; }
23 &:rtl {margin-left: $base_margin * 2; border-right-width: 1px; }
24
25 .datemenu-displays-section {
26 }
27
28 .datemenu-displays-box {
29 spacing: $base_spacing;
30 }
31 }
32
33 .events-section-title {
34 @include notification_bubble($flat: true);
35 color: desaturate(darken($fg_color,40%), 10%);
36 font-weight: bold;
37 padding: .4em;
38 }
39
40 /* today button (the date) */
41 .datemenu-today-button {
42 @include notification_bubble($flat: true);
43 padding: $base_padding * 1.5;
44
45 // weekday label
46 .day-label {
47 @include fontsize($base_font_size+1);
48 font-weight: bold;
49 }
50
51 // date label
52 .date-label {
53 @include fontsize($base_font_size+7);
54 font-weight: 1000;
55 }
56 }
57
58 /* Calendar */
59 .calendar {
60 @include notification_bubble;
61 padding: $base_padding;
62
63 // month
64 .calendar-month-label {
65 color: lighten($fg_color,5%);
66 font-weight: bold;
67 padding: 8px 0;
68 &:focus {}
69 }
70
71 // prev/next month icons
72 .calendar-change-month-back StIcon,
73 .calendar-change-month-forward StIcon {
74 icon-size: $base_icon_size;
75 }
76
77 .pager-button {
78 background-color: transparent;
79 height: 32px;
80 width: 32px;
81 border-radius: $base_border_radius;
82 &:hover, &:focus { background-color: lighten($hover_bg_color, 5%); }
83 &:active { background-color: $active_bg_color; }
84 }
85
86
87 $calendar_day_size: 32px;
88
89 .calendar-day-base {
90 @include fontsize($base_font_size - 3);
91 text-align: center;
92 width: $calendar_day_size;
93 height: $calendar_day_size;
94 padding: 0;
95 margin: 2px;
96 border-radius: $calendar_day_size * 0.5 + 2px;
97 border: 1px solid transparent; //avoid jumparound due to today
98 font-feature-settings: "tnum";
99 &:hover, &:focus { background-color: $hover_bg_color; }
100 &:active,&:selected {
101 color: lighten($fg_color,10%);
102 background-color: darken($bg_color,5%);
103 }
104
105 // day of week heading
106 &.calendar-day-heading {
107 color: lighten($fg_color,10%);
108 margin-top: 1em;
109 @include fontsize($base_font_size - 4);
110 }
111 }
112
113 .calendar-day { //border collapse hack - see calendar.js
114 border-width: 0;
115 }
116
117 .calendar-day-top {
118 border-top-width: 1px;
119 }
120
121 .calendar-day-left {
122 border-left-width: 1px;
123 }
124
125 .calendar-work-day {}
126
127 .calendar-nonwork-day {
128 color: $insensitive_fg_color;
129 }
130
131 // Today
132 .calendar-today {
133 font-weight: bold;
134 border: 1px solid transparent;
135 background-color: $selected_bg_color;
136 color: $selected_fg_color;
137
138 &:hover,&:focus {
139 background-color:lighten($selected_bg_color, 3%);
140 color: $selected_fg_color;
141 }
142
143 &:active,&:selected {
144 background-color: $selected_bg_color;
145 color: $selected_fg_color;
146
147 &:hover,&:focus {
148 background-color:lighten($selected_bg_color, 3%);
149 color: $selected_fg_color;
150 }
151 }
152 }
153
154 .calendar-day-with-events {
155 background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
156 &.calendar-work-day {
157 color: lighten($fg_color,10%);
158 font-weight: bold;
159 }
160 }
161
162 .calendar-other-month-day {
163 color: transparentize($fg_color ,0.5);
164 }
165
166 .calendar-week-number {
167 @include fontsize($base_font_size - 4);
168 font-weight: bold;
169 height: 1.8em;
170 width: 2.3em;
171 border-radius: 2px;
172 margin: 6px;
173 background-color: darken($bg_color, 2%);
174 color: lighten($fg_color, 5%);
175 }
176 }
177
178 /* Events */
179 .events-button {
180 @include notification_bubble;
181 padding: $base_padding * 2;
182
183 .events-box {
184 spacing: $base_spacing;
185 }
186
187 .events-list {
188 spacing: 2 * $base_spacing;
189 }
190
191 .events-title {
192 color: desaturate(darken($fg_color,40%), 10%);
193 font-weight: bold;
194 margin-bottom: $base_margin;
195 }
196
197 .event-time {
198 color: darken($fg_color,20%);
199 font-feature-settings: "tnum";
200 @include fontsize($base_font_size - 1);
201 }
202 }
203
204 /* World clocks */
205 .world-clocks-button {
206 @include notification_bubble;
207 padding: $base_padding * 2;
208
209 .world-clocks-grid {
210 spacing-rows: $base_spacing;
211 spacing-columns: $base_spacing * 2;
212 }
213
214 // title
215 .world-clocks-header {
216 color: desaturate(darken($fg_color,40%), 10%);
217 font-weight: bold;
218 }
219
220 // city label
221 .world-clocks-city {
222 color: $fg_color;
223 @include fontsize($base_font_size);
224 font-weight: normal;
225 }
226
227 // timezone time
228 .world-clocks-time {
229 font-weight: bold;
230 color: $fg_color;
231 font-feature-settings: "tnum";
232 @include fontsize($base_font_size);
233
234 &:ltr { text-align: right; }
235 &:rtl { text-align: left; }
236 }
237
238 // timezone offset label
239 .world-clocks-timezone {
240 color: darken($fg_color,20%);
241 font-feature-settings: "tnum";
242 @include fontsize($base_font_size - 1);
243 }
244 }
245
246 /* Weather */
247 .weather-button {
248 @include notification_bubble;
249 padding: $base_padding * 2;
250
251 .weather-box {
252 spacing: $base_spacing + $base_margin;
253 }
254
255 .weather-header-box {
256 spacing: $base_spacing;
257 }
258
259 .weather-header {
260 color: desaturate(darken($fg_color,40%), 10%);
261 font-weight: bold;
262
263 &.location {
264 font-weight: normal;
265 @include fontsize($base_font_size - 1);
266 }
267 }
268
269 .weather-grid {
270 spacing-rows: $base_spacing;
271 spacing-columns: $base_spacing * 2;
272 }
273
274 .weather-forecast-time {
275 color: darken($fg_color,30%);
276 font-feature-settings: "tnum";
277 @include fontsize($base_font_size - 2);
278 font-weight: normal;
279 padding-top: 0.2em;
280 padding-bottom: 0.4em;
281 }
282
283 .weather-forecast-icon {
284 icon-size: $base_icon_size * 2;
285 }
286
287 .weather-forecast-temp {
288 font-weight: bold;
289 }
290 }
+0
-18
data/gnome-shell-sass/widgets/_check-box.scss less more
0 /* Check Boxes */
1
2 // these are equal to the size of the SVG assets
3 $check_height: 22px;
4 $check_width: 24px;
5
6
7 .check-box {
8 StBoxLayout { spacing: .8em; }
9 StBin {
10 width: $check_width;
11 height: $check_height;
12 background-image: url("resource:///org/gnome/shell/theme/checkbox-off.svg");
13 }
14 &:focus StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"); }
15 &:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); }
16 &:focus:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); }
17 }
+0
-15
data/gnome-shell-sass/widgets/_corner-ripple.scss less more
0 /* Activities Ripple */
1
2 $ripple_size: 50px;
3
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%);
7 // plus + 2px for the border (box-shadow)
8 width: $ripple_size + 2px;
9 height: $ripple_size + 2px;
10 border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve
11
12 // just a simple change to the border radius position
13 &:rtl { border-radius: 0 0 0 $ripple_size + 2px; }
14 }
+0
-61
data/gnome-shell-sass/widgets/_dash.scss less more
0 /* Dash */
1
2 $dash_placeholder_size: 32px;
3 $dash_spacing: $base_padding + 4px;
4 $dash_border_radius: $modal_radius * 1.5;
5
6 #dash {
7 @extend %overview_panel;
8 @include fontsize($base_font_size - 2);
9 padding: ($dash_spacing / 2) 0;
10
11 border-radius: 0 $dash_border_radius $dash_border_radius 0;
12 border-left-width: 0;
13 &:rtl {
14 border-radius: $dash_border_radius 0 0 $dash_border_radius;
15 border-right-width: 0;
16 }
17
18 .placeholder {
19 // background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
20 background-image:none;
21 background-size: contain;
22 height: $dash_placeholder_size;
23 }
24
25 .empty-dash-drop-target {
26 width: $dash_placeholder_size;
27 height: $dash_placeholder_size;
28 }
29 }
30
31 // Dash Items
32 .dash-item-container > StWidget {
33 padding: ($dash_spacing / 2) $dash_spacing;
34 }
35
36 // OSD Tooltip
37 .dash-label {
38 background-color: transparentize($osd_bg_color,0.05);
39 border-radius: $base_border_radius + 2px;
40 border:none;
41 box-shadow:0 0 0 1px $osd_outer_borders_color;
42 color: $osd_fg_color;
43 padding: $base_padding $base_padding + 2px;
44 text-align: center;
45 -x-offset: $base_margin * 2; // distance from the dash edge
46 }
47
48 // Show apps button
49 .show-apps {
50 @include overview-icon($osd_fg_color);
51
52 &:focus,
53 &:checked {
54 .overview-icon {
55 background-color: darken($osd_bg_color,10%);
56 color: $fg_color;
57 }
58 }
59 }
60
+0
-168
data/gnome-shell-sass/widgets/_dialogs.scss less more
0 /* Modal Dialogs */
1
2 .headline {
3 @include fontsize($base_font_size + 1);
4 }
5
6 .modal-dialog {
7 border-radius: $modal_radius;
8 @extend %bubble_panel;
9
10 .modal-dialog-content-box {
11 margin: 32px 40px;
12 spacing: 32px;
13 max-width: 28em;
14 }
15
16 .modal-dialog-linked-button {
17 @extend %bubble_button;
18 }
19 }
20
21 /* End Session Dialog */
22 .end-session-dialog {
23 width: 30em;
24
25 .end-session-dialog-battery-warning,
26 .dialog-list-title {
27 color: $warning_color;
28 }
29 }
30
31 /* Message Dialog */
32 .message-dialog-content {
33 spacing: 18px;
34
35 .message-dialog-title {
36 text-align: center;
37 font-size: 18pt;
38 font-weight: 800;
39
40 &.lightweight {
41 font-size: 13pt;
42 font-weight: 800;
43 }
44 }
45 .message-dialog-description { text-align: center; }
46 }
47
48 /* Dialog List */
49 .dialog-list {
50 spacing: 18px;
51
52 .dialog-list-title {
53 text-align: center;
54 font-weight: bold;
55 }
56
57 .dialog-list-scrollview { max-height: 200px; }
58 .dialog-list-box {
59 spacing: 1em;
60
61 .dialog-list-item {
62 spacing: 1em;
63
64 .dialog-list-item-title { font-weight: bold; }
65 .dialog-list-item-description {
66 color: darken($fg_color,5%);
67 @include fontsize($base_font_size - 1);
68 }
69 }
70 }
71 }
72
73 /* Run Dialog */
74 .run-dialog {
75 .modal-dialog-content-box {
76 margin-top: 24px;
77 margin-bottom: 14px;
78 }
79 .run-dialog-entry { width: 20em; }
80 .run-dialog-description {
81 @include fontsize($base_font_size - 1);
82 text-align: center;
83 color: darken($fg_color, 20%);
84 }
85 }
86
87 /* Password or Authentication Dialog */
88
89 .prompt-dialog {
90 width: 28em;
91
92 .modal-dialog-content-box {
93 margin-bottom: 24px;
94 }
95 }
96
97 .prompt-dialog-password-grid {
98 spacing-rows: 8px;
99 spacing-columns: 4px;
100
101 .prompt-dialog-password-entry {
102 width: auto;
103
104 // 4px (spacing) + 16px (spinner-width)
105 &:ltr { margin-left: 20px; }
106 &:rtl { margin-right: 20px; }
107 }
108 }
109
110 .prompt-dialog-password-layout {
111 spacing: 8px;
112 }
113
114 .prompt-dialog-password-entry {
115 width: 20em;
116 }
117
118 .prompt-dialog-error-label,
119 .prompt-dialog-info-label,
120 .prompt-dialog-null-label {
121 text-align: center;
122 @include fontsize($base_font_size - 1);
123 }
124
125 .prompt-dialog-error-label {
126 color: $warning_color;
127 }
128
129
130 /* Polkit Dialog */
131
132 .polkit-dialog-user-layout {
133 text-align: center;
134 spacing: 8px;
135 margin-bottom: 6px;
136
137 .polkit-dialog-user-icon {
138 border-radius: 99px;
139 background-size: contain;
140 }
141 .polkit-dialog-user-root-label { color: $warning_color; }
142 }
143
144 /* Audio selection dialog */
145 .audio-device-selection-dialog {
146 .modal-dialog-content-box { margin-bottom: 28px; }
147 .audio-selection-box { spacing: 20px; }
148 }
149
150 .audio-selection-device {
151 border: 1px solid $bubble_borders_color;
152 border-radius: 12px;
153 &:hover,&:focus { background-color: $hover_bg_color; }
154 &:active {
155 background-color: $selected_bg_color;
156 color: $selected_fg_color;
157 }
158 }
159
160 .audio-selection-device-box {
161 padding: 20px;
162 spacing: 20px;
163 }
164
165 .audio-selection-device-icon {
166 icon-size: $base_icon_size * 4;
167 }
+0
-27
data/gnome-shell-sass/widgets/_entries.scss less more
0 /* Entries */
1
2 StEntry {
3 border-radius: $base_border_radius;
4 padding: 8px;
5 border-width: 1px;
6 color: $fg_color;
7 @include entry(normal);
8 //&:hover { @include entry(hover);}
9 &:focus { @include entry(focus);}
10 &:insensitive { @include entry(insensitive);}
11 selection-background-color: $selected_bg_color;
12 selected-color: $selected_fg_color;
13 StIcon.capslock-warning {
14 icon-size: 16px;
15 warning-color: $warning_color;
16 padding: 0 4px;
17 }
18 StIcon.peek-password {
19 icon-size: $base_icon_size;
20 padding: 0 4px;
21 }
22 StLabel.hint-text {
23 margin-left: 2px;
24 color: transparentize($fg_color, 0.3);
25 }
26 }
+0
-10
data/gnome-shell-sass/widgets/_hotplug.scss less more
0 // hotplug
1
2 .hotplug-notification-item {
3 @extend %bubble_button;
4 }
5
6 .hotplug-notification-item-icon {
7 icon-size: 24px;
8 padding: 0 4px;
9 }
+0
-35
data/gnome-shell-sass/widgets/_ibus-popup.scss less more
0 // IBus Candidate Popup
1
2 .candidate-popup-boxpointer {
3 @extend .popup-menu-boxpointer;
4 }
5
6 .candidate-popup-content {
7 padding: 0.5em;
8 spacing: 0.3em;
9 }
10
11 .candidate-index {
12 padding: 0 0.5em 0 0;
13 color: darken($fg_color,10%);
14 }
15
16 .candidate-box {
17 padding: 0.3em 0.5em 0.3em 0.5em;
18 border-radius: $base_border_radius;
19 &:selected,&:hover { background-color: $selected_bg_color; color: $selected_fg_color; }
20 }
21
22 .candidate-page-button-box {
23 height: 2em;
24 .vertical & { padding-top: 0.5em; }
25 .horizontal & { padding-left: 0.5em; }
26 }
27
28 .candidate-page-button {
29 padding: 4px;
30 }
31
32 .candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0; }
33 .candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px; }
34 .candidate-page-button-icon { icon-size: 1em; }
+0
-115
data/gnome-shell-sass/widgets/_keyboard.scss less more
0 /* On-screen Keyboard */
1
2 $key_size: 1.2em;
3 $key_border_radius: $base_border_radius + 3px;
4 $key_bg_color: $bg_color;
5 // $default_key_bg_color: darken($key_bg_color, 4%);
6 $default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten($osd_bg_color, 2%));
7
8
9 // draw keys using button function
10 #keyboard {
11 background-color: transparentize(if($variant=='light', darken($bg_color, 5%), darken($bg_color, 8%)), 0.1);
12 box-shadow: inset 0 1px 0 0 $osd_outer_borders_color;
13
14 .page-indicator {
15 padding: $base_padding;
16
17 .page-indicator-icon {
18 width: 8px;
19 height: 8px;
20 }
21 }
22 }
23
24 // the container for individual keys
25 .key-container {
26 padding: $base_margin;
27 spacing: $base_margin;
28 }
29
30 // the keys
31 .keyboard-key {
32
33 @include button(normal, $c:$key_bg_color);
34
35 &:focus { @include button(focus);}
36 &:hover, &:checked { @include button(hover, $c: $key_bg_color);}
37 &:active { @include button(active, $c: $key_bg_color); }
38
39 @include fontsize($base_font_size + 5);
40 min-height: $key_size;
41 min-width: $key_size;
42 border-width: 1px;
43 border-style: solid;
44 border-radius: $key_border_radius;
45
46 &:grayed { //FIXMEy
47 background-color: darken($bg_color, 3%);
48 color: $osd_fg_color;
49 border-color: $osd_borders_color;
50 }
51
52 // non-character keys
53 &.default-key {
54 @include button(normal, $c:$default_key_bg_color);
55 &:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
56 &:active { @include button(active, $c: $default_key_bg_color);}
57 }
58
59 // enter key is suggested-action
60 &.enter-key {
61 @include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
62 &:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
63 &:active {@include button(active, $c: darken($selected_bg_color, 2%));}
64 }
65
66 &.shift-key-uppercase { color: $selected_bg_color }
67
68 StIcon { icon-size: 1.125em; }
69 }
70
71 // long press on a key popup
72 .keyboard-subkeys {
73 color: $osd_fg_color;
74 -arrow-border-radius: $modal_radius;
75 -arrow-background-color: $osd_bg_color;
76 -arrow-border-width: 1px;
77 -arrow-border-color: lighten($osd_bg_color, 9%);
78 -arrow-base: 20px;
79 -arrow-rise: 10px;
80 -boxpointer-gap: $base_spacing;
81
82 .keyboard-key {
83 @include button(normal, $c:$key_bg_color);
84
85 &:focus { @include button(focus);}
86 &:hover, &:checked { @include button(hover, $c: $key_bg_color);}
87 &:active { @include button(active, $c: $key_bg_color); }
88
89 border-radius:$base_border_radius;
90 }
91 }
92
93 // emoji
94 .emoji-page {
95 .keyboard-key {
96 background-color: transparent;
97 border: none;
98 color: initial;
99 }
100 }
101
102 .emoji-panel {
103 .keyboard-key:latched {
104 border-color: lighten($selected_bg_color, 5%);
105 background-color: $selected_bg_color;
106 }
107 }
108
109 // suggestions
110 .word-suggestions {
111 @include fontsize($base_font_size + 3);
112 spacing: 12px;
113 min-height: 20pt;
114 }
+0
-169
data/gnome-shell-sass/widgets/_login-dialog.scss less more
0 /* Login Dialog */
1
2 .login-dialog-banner-view {
3 padding-top: 24px;
4 max-width: 23em;
5 }
6
7 .login-dialog {
8 //reset
9 border: none;
10 background-color: transparent;
11
12 $_gdm_bg: lighten(#2e3436, 19%);
13
14 StEntry {
15 @if $variant=='dark' {
16 $_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5);
17 background-color: $_gdm_entry_bg;
18 color: $osd_fg_color;
19 }
20 }
21
22 .modal-dialog-button-box { spacing: 3px; }
23 .modal-dialog-button {
24 padding: 4px 18px;
25 box-shadow: 0 1px 3px rgba(0,0,0,0.2);
26 background-color: $_gdm_bg;
27 border-color: $_gdm_bg;
28 color: $fg_color;
29
30 $_hover_c: lighten($_gdm_bg, 5%);
31 &:hover, &:focus {
32 background-color: $_hover_c;
33 border-color: $_hover_c;
34 }
35 &:active {
36 $_active_c: darken($_gdm_bg, 5%);
37 box-shadow: none;
38 background-color: $_active_c;
39 border-color: $_active_c;
40 }
41 &:insensitive {
42 @include button(insensitive);
43 border-color: darken($_gdm_bg, 5%);
44 background-color: darken($_gdm_bg, 5%);
45 color: transparentize($fg_color, 0.3);
46 }
47 &:default {
48 @include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
49 border-color: $selected_bg_color;
50 &:hover, &:focus {
51 @include button(hover,$c:$selected_bg_color, $tc:$selected_fg_color);
52 $_def_hover_c: lighten($selected_bg_color, 5%);
53 background-color: $_def_hover_c;
54 border-color: $_def_hover_c;
55 }
56 &:active {
57 @include button(active,$c:$selected_bg_color, $tc:$selected_fg_color);
58 $_def_active_c: darken($selected_bg_color, 5%);
59 background-color: $_def_active_c;
60 border-color: $_def_active_c;
61 }
62 &:insensitive {
63 @include button(insensitive);
64 border-color: darken($selected_bg_color, 10%);
65 background-color: darken($selected_bg_color, 10%);
66 color: transparentize($selected_fg_color, 0.3);
67 }
68 }
69 }
70
71 .cancel-button,
72 .switch-user-button,
73 .login-dialog-session-list-button {
74 padding: 0;
75 border-radius: 99px;
76 width: $base_icon_size * 2;
77 height: $base_icon_size * 2;
78 border-color: transparentize($bg_color,0.7);
79 background-color: transparentize($bg_color,0.7);
80
81 StIcon { icon-size: $base_icon_size; }
82 }
83
84 .caps-lock-warning-label,
85 .login-dialog-message-warning {
86 color: $osd_fg_color;
87 }
88 }
89
90 .login-dialog-logo-bin { padding: 24px 0px; }
91 .login-dialog-banner { color: darken($osd_fg_color,10%); }
92 .login-dialog-button-box { width: 23em; spacing: 5px; }
93 .login-dialog-message { text-align: center; }
94 .login-dialog-message-hint { padding-top: 0; padding-bottom: 20px; }
95 .login-dialog-user-selection-box { padding: 100px 0px; }
96 .login-dialog-not-listed-label {
97 padding-left: 2px;
98 .login-dialog-not-listed-button:focus &,
99 .login-dialog-not-listed-button:hover & {
100 color: $osd_fg_color;
101 }
102 }
103
104 .login-dialog-not-listed-label {
105 @include fontsize($base_font_size - 1);
106 font-weight: bold;
107 color: darken($osd_fg_color,30%);
108 padding-top: 1em;
109 }
110
111 .login-dialog-user-list-view { -st-vfade-offset: 1em; }
112 .login-dialog-user-list {
113 spacing: 12px;
114 width: 23em;
115 &:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
116 &:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
117 }
118
119 .login-dialog-user-list-item {
120 border-radius: $base_border_radius + 4px;
121 padding: 6px;
122 color: darken($osd_fg_color,30%);
123 &:ltr .user-widget { padding-right: 1em; }
124 &:rtl .user-widget { padding-left: 1em; }
125 .login-dialog-timed-login-indicator {
126 height: 2px;
127 margin-top: 6px;
128 background-color: $osd_fg_color;
129 }
130 &:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
131 }
132
133 .user-widget-label {
134 color: $osd_fg_color;
135 }
136
137 .user-widget.horizontal .user-widget-label {
138 @include fontsize($base_font_size + 2);
139 font-weight: bold;
140 padding-left: 15px;
141
142 &:ltr { padding-left: 14px; text-align: left; }
143 &:rtl { padding-right: 14px; text-align: right; }
144 }
145
146 .user-widget.vertical .user-widget-label {
147 @include fontsize($base_font_size + 5);
148 text-align: center;
149 font-weight: normal;
150 padding-top: 16px;
151 }
152
153 .login-dialog-prompt-layout {
154 padding-top: 24px;
155 padding-bottom: 12px;
156 spacing: $base_spacing * 2;
157 width: 23em;
158 }
159
160 .login-dialog-prompt-entry {
161 height: 1.5em;
162 }
163
164 .login-dialog-prompt-label {
165 color: darken($osd_fg_color, 20%);
166 @include fontsize($base_font_size + 1);
167 padding-top: 1em;
168 }
+0
-109
data/gnome-shell-sass/widgets/_looking-glass.scss less more
0 /* Looking Glass */
1
2 $text_fg_color: #ccc;
3
4 // Dialog
5 #LookingGlassDialog {
6 background-color: $osd_bg_color;
7 spacing: $base_spacing;
8 padding: 4px;
9 border: 1px solid transparentize($osd_fg_color, 0.8);
10 border-radius: $base_border_radius;
11 color: $osd_fg_color;
12
13 & > #Toolbar {
14 border: none;
15 border-radius: $base_border_radius;
16 background-color: $osd_bg_color;
17 }
18
19 .labels { spacing: $base_spacing; }
20 .notebook-tab {
21 -natural-hpadding: $base_padding * 2;
22 -minimum-hpadding: 6px;
23 font-weight: bold;
24 color: darken($osd_fg_color, 15%);
25 transition-duration: 100ms;
26 padding-left: .3em;
27 padding-right: .3em;
28 border-bottom-width: 2px;
29 &:hover {
30 color: $osd_fg_color;
31 }
32 &:selected {
33 border-bottom-width: 2px;
34 box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color, 5%);
35 color: $osd_fg_color;
36 }
37 }
38 StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
39 StBoxLayout#ResultsArea { spacing: $base_spacing; }
40 }
41
42 .lg-dialog {
43 StEntry {
44 background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
45 color: $osd_fg_color;
46 border-color: transparentize($osd_fg_color, 0.8);
47 min-height: 22px;
48 selection-background-color: $selected_bg_color;
49 selected-color: $selected_fg_color;
50 }
51 .shell-link {
52 color: $link_color;
53 &:hover { color: lighten($link_color, 10%); }
54 &:active { color: darken($link_color, 10%); }
55 }
56 .actor-link {
57 color: $text_fg_color;
58 &:hover { color: lighten($text_fg_color, 20%); }
59 &:active { color: darken($text_fg_color, 20%); }
60 }
61 }
62
63 .lg-completions-text {
64 font-size: .9em;
65 font-style: italic;
66 }
67
68 .lg-obj-inspector-title {
69 spacing: $base_spacing;
70 }
71
72 .lg-obj-inspector-button {
73 border: 1px solid $osd_borders_color;
74 padding: 4px;
75 border-radius: $base_border_radius;
76 &:hover { border: 1px solid #ffffff; }
77 }
78
79 // Extensions
80 #lookingGlassExtensions { padding: 4px; }
81
82 .lg-extensions-list {
83 padding: 4px;
84 spacing: 6px;
85 }
86
87 .lg-extension {
88 border: 1px solid lighten($osd_borders_color, 5%);
89 background-color: lighten($osd_bg_color, 5%);
90 border-radius: $base_border_radius;
91 padding: 4px;
92 }
93
94 .lg-extension-name {
95 font-weight: bold;
96 }
97
98 .lg-extension-meta {
99 spacing: 6px;
100 }
101
102 // Inspector
103 #LookingGlassPropertyInspector {
104 background: $osd_bg_color;
105 border: 1px solid $osd_borders_color;
106 border-radius: $base_border_radius;
107 padding: 6px;
108 }
+0
-136
data/gnome-shell-sass/widgets/_message-list.scss less more
0 /* Message List */
1 // a.k.a. notifications in the menu
2
3 // main list
4 .message-list {
5 width: 31.5em;
6 padding: 0 $base_padding * 2;
7
8 .message-list-placeholder { spacing: 12px; }
9 }
10
11 .message-list-sections {
12 spacing: $base_spacing;
13 margin: 0 $base_margin * 4; // to account for scrollbar
14 }
15
16 .message-list-section,
17 .message-list-section-list {
18 spacing: $base_spacing;
19 }
20
21 // do-not-disturb + clear button
22 .message-list-controls {
23 margin: ($base_margin * 2) ($base_margin * 4) 0;
24 // NOTE: remove the padding if notification_bubble could remove margin for drop shadow
25 padding: $base_margin;
26 spacing: $base_spacing * 2;
27 }
28
29 // message bubbles
30 .message {
31 @include notification_bubble;
32
33 // icon container
34 .message-icon-bin {
35 padding: ($base_padding * 3) 0 ($base_padding * 3) ($base_padding * 2);
36
37 &:rtl {
38 padding: ($base_padding * 3) ($base_padding * 2) ($base_padding * 3) 0;
39 }
40
41 // icon size and color
42 > StIcon {
43 icon-size: $base_icon_size*2; // 32px
44 -st-icon-style: symbolic;
45 }
46
47 // fallback
48 > .fallback-app-icon {
49 width: $base_icon_size;
50 height: $base_icon_size;
51 }
52 }
53
54 // content
55 .message-content {
56 padding: $base_padding + $base_margin * 2;
57 spacing: 4px;
58 }
59
60 // title
61 .message-title {
62 font-weight: bold;
63 }
64
65 // secondary container in title box
66 .message-secondary-bin {
67 padding: 0 $base_margin * 2;
68
69 // notification time stamp
70 > .event-time {
71 color: transparentize($fg_color, 0.5);
72 @include fontsize($base_font_size - 2);
73 /* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
74 padding-bottom: 0.13em;
75
76 &:ltr { text-align: right };
77 &:rtl { text-align: left };
78 }
79 }
80
81 // close button
82 .message-close-button {
83 color: lighten($fg_color, 15%);
84 &:hover { color: if($variant=='light', lighten($fg_color, 30%), darken($fg_color, 10%)); }
85 &:active { color: if($variant=='light', lighten($fg_color, 40%), darken($fg_color, 20%)); }
86 }
87
88 // body
89 .message-body {
90 color: darken($fg_color, 10%);
91 }
92 }
93
94 // URLs in messages
95 .url-highlighter {
96 link-color: $link_color;
97 }
98
99 /* Media Controls */
100 .message-media-control {
101 padding: $base_padding * 2 $base_padding * 4;
102 color: darken($fg_color, 15%);
103
104 // uses $hover_bg_color since the media controls are in a notification_bubble
105 &:hover {
106 background-color: lighten($hover_bg_color, 5%);
107 color: $fg_color;
108 }
109
110 &:active {
111 background-color: darken($hover_bg_color, 2%);
112 color: $fg_color;
113 }
114
115 &:insensitive { color: darken($fg_color,40%); }
116
117 // fix border-radius for last button
118 &:last-child:ltr { border-radius: 0 $base_border_radius+2 $base_border_radius+2 0; }
119 &:last-child:rtl { border-radius: $base_border_radius+2 0 0 $base_border_radius+2; }
120 }
121
122 // album-art
123 .media-message-cover-icon {
124 icon-size: $base_icon_size*2 !important; // 48px
125 border-radius: $base_border_radius;
126
127 // when there is no artwork
128 &.fallback {
129 color: darken($fg_color, 17%);
130 background-color: $bg_color;
131 border: 1px solid transparent;
132 border-radius: $base_border_radius;
133 icon-size: $base_icon_size * 2 !important;
134 }
135 }
+0
-56
data/gnome-shell-sass/widgets/_misc.scss less more
0 // Rubberband for select-area screenshots
1 .select-area-rubberband {
2 background-color: transparentize($selected_bg_color,0.7);
3 border: 1px solid $selected_bg_color;
4 }
5
6 // User icon
7 .user-icon {
8 background-size: contain;
9 color: $osd_fg_color;
10 border-radius: 99px;
11 border: 2px $osd_fg_color;
12 &:hover {
13 color: lighten($osd_fg_color,30%);
14 }
15
16 & StIcon {
17 background-color: transparentize($osd_fg_color,0.95);
18 border-radius: 99px;
19 }
20 }
21
22 .user-widget.vertical .user-icon {
23 icon-size: $base_icon_size * 6; // 128px
24
25 & StIcon {
26 padding: $base_padding * 3 + 2px; // 20px
27 padding-top: $base_padding * 3; // 18 px
28 padding-bottom: $base_padding * 3 + 4px; // 22px
29 width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
30 }
31 }
32
33 .user-widget.horizontal .user-icon {
34 icon-size: $base_icon_size * 4; // 64px
35
36 & StIcon {
37 padding: $base_padding * 2 ; // 12px
38 width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
39 }
40 }
41
42 .lightbox { background-color: black; }
43 .flashspot { background-color: white; }
44
45
46 // Hidden
47 .hidden { color: rgba(0,0,0,0);}
48
49 // Caps-lock warning
50 .caps-lock-warning-label {
51 text-align: center;
52 padding-bottom: 8px;
53 @include fontsize($base_font_size - 1);
54 color: $warning_color;
55 }
+0
-56
data/gnome-shell-sass/widgets/_network-dialog.scss less more
0 /* 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-airplane-box { spacing: 12px; }
13
14 .nm-dialog-airplane-headline {
15 font-weight: bold;
16 text-align: center;
17 }
18
19 .nm-dialog-airplane-text { color: $fg_color; }
20
21 // header
22 .nm-dialog-header {
23 font-weight: bold;
24 }
25 .nm-dialog-header-icon {
26 icon-size: $base_icon_size * 2;
27 }
28 .nm-dialog-header-hbox { spacing: 10px; }
29
30 // list of networks
31 .nm-dialog-scroll-view {
32 border: 1px solid $borders_color;
33 padding:0;
34 background-color: darken($bg_color, 3%);
35 }
36
37 // list item
38 .nm-dialog-item {
39 @include fontsize($base_font_size);
40 border-bottom: 1px solid $borders_color;
41 padding: $base_padding * 2;
42 spacing: 0px;
43 &:selected {
44 background-color: $selected_bg_color;
45 color: $selected_fg_color;
46 }
47 }
48
49 // icons in list
50 .nm-dialog-icon { icon-size: $base_icon_size; }
51 .nm-dialog-icons { spacing: $base_spacing * 2; }
52
53 // no networks
54 .no-networks-label { color: $insensitive_fg_color; }
55 .no-networks-box { spacing: $base_padding; }
+0
-57
data/gnome-shell-sass/widgets/_notifications.scss less more
0 /* Notifications & Message Tray */
1
2 $notification_banner_height: 64px;
3 $notification_banner_width: 34em;
4
5 // Banner notifications
6 .notification-banner {
7 min-height: $notification_banner_height;
8 width: $notification_banner_width;
9
10 .notification-actions {
11 spacing: 0;
12 }
13
14 .notification-button {
15 @extend %bubble_button;
16 }
17 }
18
19 // counter
20 .summary-source-counter {
21 font-size: $base_font_size - 1pt;
22 font-weight: bold;
23 height: 1.6em;
24 width: 1.6em;
25 -shell-counter-overlap-x: 3px;
26 -shell-counter-overlap-y: 3px;
27 background-color: $selected_bg_color;
28 color: $selected_fg_color;
29 border: 2px solid $fg_color;
30 box-shadow: 0 2px 2px rgba(0,0,0,0.5);
31 border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
32 }
33
34 // chat bubbles
35 .chat-body { spacing: 5px; }
36 .chat-response { margin: 5px; }
37 .chat-log-message { color: darken($fg_color,10%); }
38 .chat-new-group { padding-top: 1em; }
39 .chat-received {
40 padding-left: 4px;
41 &:rtl { padding-left: 0px; padding-right: 4px; }
42 }
43
44 .chat-sent {
45 padding-left: 18pt;
46 color: lighten($fg_color, 15%);
47 &:rtl { padding-left: 0; padding-right: 18pt; }
48 }
49
50 .chat-meta-message {
51 padding-left: 4px;
52 @include fontsize($base_font_size - 2);
53 font-weight: bold;
54 color: lighten($fg_color,18%);
55 &:rtl { padding-left: 0; padding-right: 4px; }
56 }
+0
-45
data/gnome-shell-sass/widgets/_osd.scss less more
0 /* OSD */
1
2 $osd_levelbar_height:8px;
3
4 .osd-window {
5 @extend %osd_panel;
6 text-align: center;
7 font-weight: bold;
8 spacing: $base_spacing * 2; // 12px
9 margin: $base_margin * 8; // 32px
10 min-width: 64px;
11 min-height: 64px;
12
13 StIcon {
14 icon-size:$base_icon_size * 6;
15 }
16
17 .osd-monitor-label { font-size: 3em; }
18
19 .level {
20 height: $osd_levelbar_height;
21 -barlevel-height: $osd_levelbar_height;
22 -barlevel-background-color: transparentize($osd_fg_color, if($variant=='light', 0.7, 0.9));
23 -barlevel-active-background-color: $osd_fg_color;
24 -barlevel-overdrive-color: $destructive_color;
25 -barlevel-overdrive-separator-width: 3px;
26 }
27 }
28
29 /* Pad OSD */
30 .pad-osd-window {
31 padding: 32px;
32 background-color: transparentize(#000, 0.2);
33
34 .pad-osd-title-box { spacing: 12px; }
35 .pad-osd-title-menu-box { spacing: 6px; }
36 }
37
38 .combo-box-label {
39 width: 15em;
40 }
41
42 .resize-popup {
43 @extend %osd_panel;
44 }
+0
-10
data/gnome-shell-sass/widgets/_overview.scss less more
0 /* OVERVIEW */
1
2 #overview {
3 spacing: 24px;
4 background-color: transparent;
5 }
6
7 .overview-controls {
8 padding-bottom: 32px;
9 }
+0
-121
data/gnome-shell-sass/widgets/_panel.scss less more
0 /* Top Bar */
1 // a.k.a. the panel
2
3 $panel_corner_radius: $base_border_radius+1;
4 $panel_bg_color: #000;
5 $panel_fg_color: #ccc;
6 $panel_height: 1.86em;
7
8
9 #panel {
10 background-color: $panel_bg_color;
11 font-weight: bold;
12 height: $panel_height;
13 font-feature-settings: "tnum";
14
15 // transparent panel on lock & login screens
16 &.unlock-screen,
17 &.login-screen {
18 background-color: transparent;
19
20 .panel-corner {
21 -panel-corner-radius: 0;
22 -panel-corner-background-color: transparent;
23 -panel-corner-border-color: transparent;
24 }
25 }
26
27 // spacing between activities, app menu and such
28 #panelLeft, #panelCenter {
29 spacing: $base_spacing;
30 }
31
32 // the rounded outset corners
33 .panel-corner {
34 -panel-corner-radius: $panel_corner_radius;
35 -panel-corner-background-color: $panel_bg_color;
36 -panel-corner-border-width: 2px;
37 -panel-corner-border-color: transparent;
38
39 &:active, &:overview, &:focus {
40 -panel-corner-border-color: lighten($selected_bg_color,5%);
41 }
42 }
43
44 // panel menus
45 .panel-button {
46 font-weight: bold;
47 color: $panel_fg_color;
48 -natural-hpadding: $base_padding * 2;
49 -minimum-hpadding: $base_padding;
50
51 &:hover {
52 color: lighten($panel_fg_color, 20%);
53 }
54
55 &:active, &:overview, &:focus, &:checked {
56 color: lighten($panel_fg_color, 20%);
57 }
58
59 // status area icons
60 .system-status-icon {
61 icon-size: $base_icon_size;
62 padding: $base_padding - 1px;
63 }
64
65 // app menu icon
66 .app-menu-icon {
67 margin-left: $base_margin;
68 margin-right: $base_margin;
69 -st-icon-style: symbolic;
70 // dimensions of the icon are hardcoded
71 }
72
73 // lock & login screen styles
74 .unlock-screen &,
75 .login-screen & {
76 color: lighten($fg_color, 10%);
77 &:focus, &:hover, &:active { color: lighten($fg_color, 10%); }
78 }
79 }
80
81 .panel-button {
82 &:active, &:overview, &:focus, &:checked {
83 // Trick due to St limitations. It needs a background to draw a box-shadow
84 background-color: rgba(0, 0, 0, 0.01);
85 box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
86 }
87 }
88
89 .panel-button.clock-display {
90 // Move highlight from .panel-button to .clock
91 &:active, &:overview, &:focus, &:checked {
92 box-shadow: none;
93
94 .clock {
95 background-color: rgba(0, 0, 0, 0.01);
96 box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
97 }
98 }
99 }
100
101 .panel-status-indicators-box,
102 .panel-status-menu-box {
103 spacing: 2px;
104 }
105
106 // spacing between power icon and (optional) percentage label
107 .power-status.panel-status-indicators-box {
108 spacing: 0;
109 }
110
111 // indicator for active
112 .screencast-indicator,
113 .remote-access-indicator { color: $warning_color; }
114 }
115
116 // App Menu
117 #appMenu {
118 spacing: $base_spacing;
119 .label-shadow { color: transparent; }
120 }
+0
-131
data/gnome-shell-sass/widgets/_popovers.scss less more
0 /* Popovers/Menus */
1
2 $popover_arrow_height: 12px;
3
4 //.the popover itself
5 .popup-menu-boxpointer {
6 -arrow-border-radius: $base_border_radius+4;
7 -arrow-background-color: $bg_color;
8 -arrow-border-width: 1px;
9 -arrow-border-color: $borders_color;
10 -arrow-base: $popover_arrow_height * 2;
11 -arrow-rise: $popover_arrow_height;
12 -arrow-box-shadow: 0 1px 3px rgba(0,0,0,0.5); // dreaming bugzilla #689995
13 }
14
15 // container of the popover menu
16 .popup-menu {
17 min-width: 15em;
18 color: $fg_color;
19
20 //.popup-status-menu-item { font-weight: normal; color: pink; } //dunno what that is
21 &.panel-menu {
22 -boxpointer-gap: $base_margin; // distance from the panel
23 margin-bottom: 1.75em;
24 }
25 }
26
27 .popup-menu-content {
28 padding: $base_padding * 2 + $base_margin 0;
29 }
30
31 // menu items
32 .popup-menu-item {
33 spacing: $base_padding;
34 padding: $base_padding;
35
36 &:ltr { padding-right:1.75em; padding-left: 0; }
37 &:rtl { padding-right: 0; padding-left:1.75em; }
38
39 &:checked {
40 background-color: lighten($bg_color, 2%);
41 box-shadow: none;
42 }
43
44 &.selected {
45 background-color: transparentize(white, if($variant=='light', 0.2, 0.9));
46 color: $fg_color;
47 }
48
49 &:active {
50 background-color: $selected_bg_color;
51 color: $selected_fg_color;
52 }
53
54 &:insensitive { color: transparentize($fg_color,0.5);}
55 }
56
57 // all icons and other graphical elements
58 .popup-inactive-menu-item {
59 color: $fg_color;
60
61 &:insensitive { color: transparentize($fg_color,0.5); }
62 }
63
64 // symbolic icons in popover
65 .popup-menu-arrow,
66 .popup-menu-icon { icon-size: $base_icon_size; }
67
68 // popover submenus
69 .popup-sub-menu {
70 background-color: darken($bg_color, 3%);
71 box-shadow: none;
72 border-top: 1px solid transparentize($borders_color, 0.2);
73 border-bottom: 1px solid transparentize($borders_color, 0.2);
74 }
75
76 // container for radio and check boxes
77 .popup-menu-ornament {
78 width: 1.2em;
79
80 &:ltr { text-align: right };
81 &:rtl { text-align: left };
82 }
83
84 // separator
85 .popup-separator-menu-item {
86 padding: 0;
87
88 .popup-separator-menu-item-separator {
89 //-margin-horizontal: 24px;
90 height: 1px; //not really the whole box
91 margin: 6px 64px;
92 background-color: lighten($borders_color, 2%);
93 .popup-sub-menu & { //submenu separators
94 margin: 0 64px 0 32px;
95 @if $variant == 'dark' {
96 background-color: lighten($bg_color,10%);
97 }
98 }
99 }
100 }
101
102 // desktop background menu
103 .background-menu {
104 -boxpointer-gap: $base_margin;
105 -arrow-rise: 0px; // hide the beak on the menu
106 }
107
108 // system status menu
109 .aggregate-menu {
110 min-width: 21em;
111
112 // lock screen, shutdown, etc. buttons
113 .popup-menu-icon {
114 padding:0;
115 margin: 0 $base_margin;
116 -st-icon-style: symbolic;
117 }
118
119 .popup-sub-menu .popup-menu-item > :first-child {
120 // account for icons in submenus with padding
121 &:ltr {
122 padding-left: $base_padding + $base_margin * 2;
123 margin-left: $base_icon_size;
124 }
125 &:rtl {
126 padding-right: $base_padding + $base_margin * 2; ;
127 margin-right: $base_icon_size;
128 }
129 }
130 }
+0
-78
data/gnome-shell-sass/widgets/_screen-shield.scss less more
0 /* Screen Shield */
1
2 .unlock-dialog-clock {
3 color: white;
4 font-weight: 300;
5 text-align: center;
6 spacing: 24px;
7 padding-bottom: 2.5em;
8 }
9
10 .unlock-dialog-clock-time {
11 font-size: 64pt;
12 padding-top: 42px;
13 font-feature-settings: "tnum";
14 }
15
16 .unlock-dialog-clock-date {
17 font-size: 16pt;
18 font-weight: normal;
19 }
20
21 .unlock-dialog-clock-hint {
22 font-weight: normal;
23 padding-top: 48px;
24 }
25
26 .unlock-dialog-notifications-container {
27 margin: 12px 0;
28 spacing: 6px;
29 width: 23em;
30 background-color: transparent;
31 .summary-notification-stack-scrollview {
32 padding-top: 0;
33 padding-bottom: 0;
34 }
35
36 .notification,
37 .unlock-dialog-notification-source {
38 padding: 12px 6px;
39 border: none;
40 background-color: transparentize($osd_bg_color,0.7);
41 color: $osd_fg_color;
42 border-radius: $modal_radius;
43
44 &.critical { background-color: transparentize($osd_bg_color,0.1) }
45 }
46 }
47
48 .unlock-dialog-notification-label {
49 padding: 0px 0px 0px 12px;
50 }
51
52 .unlock-dialog-notification-count-text {
53 weight: bold;
54 padding: 0 6px;
55 color: $osd_bg_color;
56 background-color: transparentize($osd_fg_color, 0.7);
57 border-radius: 99px;
58 margin-right: 12px;
59
60 }
61
62 .screen-shield-background { //just the shadow, really
63 background: black;
64 box-shadow: 0px 2px 4px rgba(0,0,0,0.6);
65 }
66
67 #lockDialogGroup {
68 background-color: lighten(#2e3436, 8%);
69 }
70
71 #unlockDialogNotifications {
72 StButton#vhandle, StButton#hhandle {
73 background-color: transparentize($bg_color,0.7);
74 &:hover, &:focus { background-color: transparentize($bg_color,0.5); }
75 &:active { background-color: transparentize($selected_bg_color,0.5); }
76 }
77 }
+0
-29
data/gnome-shell-sass/widgets/_scrollbars.scss less more
0 /* Scrollbars */
1
2 StScrollView {
3 &.vfade { -st-vfade-offset: 68px; }
4 &.hfade { -st-hfade-offset: 68px; }
5 }
6
7 StScrollBar {
8 padding: 0;
9
10 StScrollView & {
11 min-width: 14px;
12 min-height: 14px;
13 }
14
15 StBin#trough {
16 border-radius: 0;
17 background-color: transparent;
18 }
19
20 StButton#vhandle, StButton#hhandle {
21 border-radius: 8px;
22 background-color: mix($fg_color, $bg_color, 60%);
23 //border: 3px solid transparent; //would be nice to margin or at least to transparent
24 margin: 3px;
25 &:hover { background-color: mix($fg_color, $bg_color, 80%); }
26 &:active { background-color: $selected_bg_color; }
27 }
28 }
+0
-35
data/gnome-shell-sass/widgets/_search-entry.scss less more
0 // Search entry
1
2 $search_entry_width: 320px;
3 $search_entry_height: 36px;
4
5 %search_entry,
6 .search-entry {
7 width: $search_entry_width;
8 padding: $base_padding+1 $base_padding+3;
9 border-radius: $search_entry_height * 0.5; // half the height
10 color: transparentize($fg_color,0.3);
11 background-color: $bg_color;
12 border-color: $borders_color;
13
14 &:hover {
15 background-color: $hover_bg_color;
16 border-color: $hover_borders_color;
17 color: $hover_fg_color;
18 }
19
20 &:focus {
21 padding: $base_padding $base_padding+2; // 1px less to account for wider border
22 border-width: 2px;
23 border-style: solid;
24 border-color: $selected_bg_color;
25 color: $fg_color;
26 box-shadow: inset 0 1px 2px 1px rgba(0,0,0,0.2);
27 }
28
29 .search-entry-icon {
30 icon-size: $base_icon_size;
31 padding: 0 4px;
32 color: inherit;
33 }
34 }
+0
-108
data/gnome-shell-sass/widgets/_search-results.scss less more
0 /* Search */
1
2 // search overview container
3 #searchResultsContent {
4 max-width: 1024px;
5 spacing: $base_margin * 2;
6 }
7
8 // search results sections "the boxes"
9 .search-section {
10 // This should be equal to #searchResultsContent spacing
11 spacing: $base_margin * 2;
12
13 // separator
14 .search-section-separator {
15 // height: 1px;
16 // background-color: $osd_outer_borders_color;
17 height: 0;
18 background-color: transparent;
19 }
20 }
21
22 // content
23 .search-section-content {
24 background-color: transparentize(lighten($osd_bg_color, 5%), 0.2);
25 border-radius: $modal_radius+3;
26 border: 1px solid $osd_outer_borders_color;
27 box-shadow: 0 2px 4px 0 $shadow_color;
28 text-shadow: 0 1px if($variant == 'light', rgba(255,255,255,0.2), rgba(0,0,0,0.2));
29 color: $osd_fg_color;
30 padding: $base_padding * 3;
31 // This is the space between the provider icon and the results container
32 spacing: $base_margin * 2;
33 }
34
35 %search-section-content-item {
36 @extend %icon_tile;
37
38 &:focus,
39 &:hover,
40 &:selected {
41 background-color: transparentize($osd_fg_color, .9);
42 transition-duration: 200ms;
43 }
44
45 &:active,
46 &:checked {
47 background-color: transparentize(darken($osd_bg_color, 10%), .1);
48 }
49 }
50
51 // "no results" text
52 .search-statustext {
53 @extend %status_text;
54 }
55
56 .grid-search-results {
57 spacing: $base_spacing * 6;
58 }
59
60 // Search results with icons
61 .grid-search-result {
62 @extend %app-well-app;
63 }
64
65 // search result provider
66 .search-provider-icon {
67 @extend %search-section-content-item;
68
69 // content
70 .list-search-provider-content {
71 spacing: $base_spacing * 2;
72
73 // provider labels
74 .list-search-provider-details {
75 width: 120px;
76 margin-top: 0;
77 color: darken($osd_fg_color, 8%);
78 // font-weight: bold;
79 }
80 }
81 }
82
83 // search results list
84 .list-search-results {
85 spacing: $base_spacing;
86 }
87
88 // search result listitem
89 .list-search-result {
90 @extend %search-section-content-item;
91
92 // content
93 .list-search-result-content {
94 spacing: $base_padding;
95 }
96
97 // list item title (with leading icon)
98 .list-search-result-title {
99 spacing: $base_spacing * 2;
100 // font-weight: bold;
101 }
102
103 // list item description
104 .list-search-result-description {
105 color: darken($osd_fg_color, 30%);
106 }
107 }
+0
-27
data/gnome-shell-sass/widgets/_slider.scss less more
0 /* Slider */
1
2 $slider_size: 15px;
3
4 .slider {
5 height: $slider_size;
6 // slider trough
7 -barlevel-height: 3px; // has to be an odd number
8 -barlevel-background-color: $borders_color; //background of the trough
9 -barlevel-border-width: 1px;
10 -barlevel-border-color: $borders_color; // trough border color
11 // fill style
12 -barlevel-active-background-color: $selected_bg_color; //active trough fill
13 -barlevel-active-border-color: if($variant == 'light', darken($selected_bg_color, 4%), lighten($selected_bg_color, 2%)); //active trough border
14 // overfill style (red in this case)
15 -barlevel-overdrive-color: $destructive_color;
16 -barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), lighten($destructive_color, 2%)); //trough border when red;
17 -barlevel-overdrive-separator-width:1px;
18 // slider handler
19 -slider-handle-radius: $slider_size * 0.5; // half the size of the size
20 -slider-handle-border-width: 1px;
21 -slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color);
22
23 color: if($variant == 'light', lighten($bg_color, 10%), $fg_color);
24 &:hover { color: $hover_bg_color; }
25 &:active { color: $active_bg_color; }
26 }
+0
-65
data/gnome-shell-sass/widgets/_switcher-popup.scss less more
0 /* App Switcher */
1
2 .switcher-popup {
3 padding: 8px;
4 spacing: $base_spacing * 4;
5 }
6
7 // switcher onscreen panel
8 .switcher-list {
9 @extend %osd_panel;
10
11 .item-box {
12 padding: 8px;
13 border-radius: $base_border_radius + 1px;
14 border: 1px solid transparent;
15
16 &:outlined {
17 background-color: transparentize($osd_fg_color, 0.7);
18 }
19
20 &:selected {
21 background-color: transparentize($osd_fg_color, 0.7);
22 color: $osd_fg_color;
23 }
24 }
25
26 // window thumbnails
27 .thumbnail-box {
28 padding: 2px;
29 spacing: $base_spacing;
30 }
31
32 .thumbnail {
33 width: 256px;
34 }
35
36 .separator {
37 width: 1px;
38 background: $borders_color;
39 }
40
41 .switcher-list-item-container {
42 spacing: $base_spacing * 2;
43 }
44 }
45
46 .switcher-arrow {
47 border-color: rgba(0,0,0,0);
48 color: transparentize($fg_color,0.2);
49 &:highlighted {
50 color: $fg_color;
51 }
52 }
53
54 // Input Source Switcher
55 .input-source-switcher-symbol {
56 font-size: 34pt;
57 width: 96px;
58 height: 96px;
59 }
60
61 // Window cycler highlight
62 .cycler-highlight {
63 border: 5px solid $selected_bg_color;
64 }
+0
-16
data/gnome-shell-sass/widgets/_switches.scss less more
0 /* Switches */
1
2 // these are equal to the size of the SVG assets
3 $switch_height: 22px;
4 $switch_width: 46px;
5
6 .toggle-switch {
7 color: $fg_color;
8 height: $switch_height;
9 width: $switch_width;
10 background-size: contain;
11 background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off.svg"),url("resource:///org/gnome/shell/theme/toggle-off-dark.svg"));
12 &:checked {
13 background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on.svg"),url("resource:///org/gnome/shell/theme/toggle-on-dark.svg"));
14 }
15 }
+0
-19
data/gnome-shell-sass/widgets/_tiled-previews.scss less more
0
1 /* Tiled window previews */
2 $tile_corner_radius: $base_border_radius + 1px;
3 .tile-preview {
4 background-color: transparentize($selected_bg_color,0.5);
5 border: 1px solid $selected_bg_color;
6 }
7
8 .tile-preview-left.on-primary {
9 border-radius: $tile_corner_radius 0 0 0;
10 }
11
12 .tile-preview-right.on-primary {
13 border-radius: 0 $tile_corner_radius 0 0;
14 }
15
16 .tile-preview-left.tile-preview-right.on-primary {
17 border-radius: $tile_corner_radius $tile_corner_radius 0 0;
18 }
+0
-65
data/gnome-shell-sass/widgets/_window-picker.scss less more
0 /* Window Picker */
1
2 $window_picker_spacing: $base_spacing; // 6px
3 $window_picker_padding: $base_padding * 2; // 12px
4
5 $window_thumbnail_border_color:transparentize($selected_fg_color, 0.65);
6
7 $window_close_button_size: 24px;
8 $window_close_button_padding: 3px;
9
10 $window_clone_border_size: 6px;
11
12 // Window picker
13 .window-picker {
14 // Space between window thumbnails
15 spacing: $window_picker_spacing;
16
17 // Padding for container around window thumbnails
18 padding: $window_picker_padding;
19
20 &.external-monitor { padding: $window_picker_padding; }
21 }
22
23 // Borders on window thumbnails
24 .window-clone-border {
25 border-width: $window_clone_border_size;
26 border-style: solid;
27 border-color: $window_thumbnail_border_color;
28 border-radius: $base_border_radius + 2;
29 // For window decorations with round corners we can't match
30 // the exact shape when the window is scaled. So apply a shadow
31 // to fix that case
32 box-shadow: inset 0 0 0 1px transparentize($borders_color, 0.8);
33 }
34
35 // Window titles
36 .window-caption {
37 color: $osd_fg_color;
38 background-color: $osd_bg_color;
39 border:1px solid $osd_outer_borders_color;
40 border-radius: $base_border_radius + 1;
41 padding: $base_padding $base_padding * 2;
42 font-weight: bold;
43 @include fontsize($base_font_size + 1);
44 }
45
46 // Close button
47 .window-close {
48 background-color: $selected_bg_color;
49 color: $selected_fg_color;
50 border: none;
51 border-radius: $window_close_button_size * 0.5 + $window_close_button_padding * 2;
52 padding: $window_close_button_padding;
53 height: $window_close_button_size;
54 width: $window_close_button_size;
55 box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5);
56
57 &:hover {
58 background-color: lighten($selected_bg_color, 5%);
59 }
60
61 &:active {
62 background-color: darken($selected_bg_color, 5%);
63 }
64 }
+0
-36
data/gnome-shell-sass/widgets/_workspace-switcher.scss less more
0 /* Workspace Switcher */
1 .workspace-switcher-group {
2 padding: $base_padding * 2;
3 }
4
5 .workspace-switcher-container {
6 @extend %osd_panel;
7 }
8
9 .workspace-switcher {
10 background: transparent;
11 border: none;
12 border-radius: 0;
13 padding: 0;
14 spacing: $base_spacing * 2;
15 }
16
17 .ws-switcher-box {
18 background: transparent;
19 height: 50px;
20 background-size: 32px;
21 border: 1px solid transparentize($osd_fg_color,0.9);
22 border-radius: $base_border_radius + 3px;
23 }
24
25 // active workspace in the switcher
26 .ws-switcher-active-up,
27 .ws-switcher-active-down,
28 .ws-switcher-active-left,
29 .ws-switcher-active-right {
30 height: 52px;
31 background-color: $selected_bg_color;
32 border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), lighten($selected_bg_color, 5%));
33 border-radius: $base_border_radius + 3px;
34 color: $selected_fg_color;
35 }
+0
-32
data/gnome-shell-sass/widgets/_workspace-thumbnails.scss less more
0 /* Workspace pager */
1
2 // thumbnails in overview
3 .workspace-thumbnails {
4 @extend %overview_panel;
5 visible-width: 32px; //amount visible before hover
6 spacing: $base_spacing;
7 padding: $base_padding;
8
9 border-radius: $modal_radius 0 0 $modal_radius;
10 border-right-width: 0;
11
12 &:rtl {
13 border-radius: 0 $modal_radius $modal_radius 0;
14 border-left-width: 0;
15 }
16
17 // drag and drop indicator
18 .placeholder {
19 background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
20 background-size: contain;
21 height: 24px;
22 }
23 }
24
25 // selected indicator
26 .workspace-thumbnail-indicator {
27 border: 3px solid $selected_bg_color;
28 border-radius: 3px;
29 padding: 0px;
30 // background-color: transparentize($selected_bg_color, 0.9);
31 }
115115 let keepAliveWorkspaces = [];
116116 let foundNonEmpty = false;
117117 for (let i = this._workspaces.length - 1; i >= 0; i--) {
118 if (!foundNonEmpty)
119 foundNonEmpty = this._workspaces[i].list_windows().length > 0;
120 else if (!this._workspaces[i]._keepAliveId)
118 if (!foundNonEmpty) {
119 foundNonEmpty = this._workspaces[i].list_windows().some(
120 w => !w.is_on_all_workspaces());
121 } else if (!this._workspaces[i]._keepAliveId) {
121122 keepAliveWorkspaces.push(this._workspaces[i]);
123 }
122124 }
123125
124126 // make sure the original method only removes empty workspaces at the end
102102 direction++;
103103 if (direction === 4)
104104 direction = 0;
105
106105 }
107106
108107 let loopCounter = 0;
485485 }
486486
487487 _reloadBookmarks() {
488
489488 this._bookmarks = [];
490489
491490 let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path());
351351 super._init(perMonitor, monitorIndex);
352352
353353 this.metaWindow = metaWindow;
354 this._skipTaskbarId = metaWindow.connect('notify::skip-taskbar', () => {
355 this._updateVisibility();
356 });
354357 this._updateVisibility();
355358
356359 this._windowTitle = new WindowTitle(this.metaWindow);
411414
412415 _onDestroy() {
413416 super._onDestroy();
417 this.metaWindow.disconnect(this._skipTaskbarId);
414418 this.metaWindow.disconnect(this._workspaceChangedId);
415419 global.display.disconnect(this._notifyFocusId);
416420 this._contextMenu.destroy();
607611 this._contextMenuManager.addMenu(this._appContextMenu);
608612 this.label_actor = this._multiWindowTitle.label_actor;
609613 }
610
611614 }
612615
613616 _onClicked(actor, button) {
947950 }
948951
949952 _onWindowAdded(ws, win) {
950 if (win.skip_taskbar)
951 return;
952
953953 if (!this._grouped)
954954 this._checkGrouping();
955955
2323 this.connect('destroy', this._onDestroy.bind(this));
2424
2525 this._sizeChangedId = this._window.connect('size-changed',
26 this._relayout.bind(this));
26 () => this.queue_relayout());
2727 this._positionChangedId = this._window.connect('position-changed',
28 this._relayout.bind(this));
28 () => this.queue_relayout());
2929 this._minimizedChangedId = this._window.connect('notify::minimized',
30 this._relayout.bind(this));
30 this._updateVisible.bind(this));
3131 this._monitorEnteredId = global.display.connect('window-entered-monitor',
32 this._relayout.bind(this));
32 this._updateVisible.bind(this));
3333 this._monitorLeftId = global.display.connect('window-left-monitor',
34 this._relayout.bind(this));
35
36 // Do initial layout when we get a parent
37 let id = this.connect('parent-set', () => {
38 this.disconnect(id);
39 if (!this.get_parent())
40 return;
41 this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
42 this._laterId = 0;
43 this._relayout();
44 return false;
45 });
46 });
34 this._updateVisible.bind(this));
4735
4836 this._focusChangedId = global.display.connect('notify::focus-window',
4937 this._onFocusChanged.bind(this));
5139 }
5240
5341 // needed for DND
54 get realWindow() {
55 return this._window.get_compositor_private();
42 get metaWindow() {
43 return this._window;
5644 }
5745
5846 _onDestroy() {
6250 global.display.disconnect(this._monitorEnteredId);
6351 global.display.disconnect(this._monitorLeftId);
6452 global.display.disconnect(this._focusChangedId);
65 if (this._laterId)
66 Meta.later_remove(this._laterId);
6753 }
6854
6955 _onFocusChanged() {
7359 this.remove_style_class_name('active');
7460 }
7561
76 _relayout() {
62 _updateVisible() {
7763 let monitor = Main.layoutManager.findIndexForActor(this);
7864 this.visible = monitor === this._window.get_monitor() &&
7965 this._window.window_type !== Meta.WindowType.DESKTOP &&
8066 this._window.showing_on_its_workspace();
81
82 if (!this.visible)
83 return;
84
85 let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
86 let hscale = this.get_parent().allocation.get_width() / workArea.width;
87 let vscale = this.get_parent().allocation.get_height() / workArea.height;
88
89 let frameRect = this._window.get_frame_rect();
90 this.set_size(
91 Math.round(Math.min(frameRect.width, workArea.width) * hscale),
92 Math.round(Math.min(frameRect.height, workArea.height) * vscale));
93 this.set_position(
94 Math.round(frameRect.x * hscale),
95 Math.round(frameRect.y * vscale));
67 }
68 });
69
70 let WorkspaceLayout = GObject.registerClass(
71 class WorkspaceLayout extends Clutter.LayoutManager {
72 vfunc_get_preferred_width() {
73 return [0, 0];
74 }
75
76 vfunc_get_preferred_height() {
77 return [0, 0];
78 }
79
80 vfunc_allocate(container, box) {
81 const monitor = Main.layoutManager.findIndexForActor(container);
82 const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
83 const hscale = box.get_width() / workArea.width;
84 const vscale = box.get_height() / workArea.height;
85
86 for (const child of container) {
87 const childBox = new Clutter.ActorBox();
88 const frameRect = child.metaWindow.get_frame_rect();
89 childBox.set_size(
90 Math.round(Math.min(frameRect.width, workArea.width) * hscale),
91 Math.round(Math.min(frameRect.height, workArea.height) * vscale));
92 childBox.set_origin(
93 Math.round(frameRect.x * hscale),
94 Math.round(frameRect.y * vscale));
95 child.allocate(childBox);
96 }
9697 }
9798 });
9899
102103 super._init({
103104 style_class: 'workspace',
104105 child: new Clutter.Actor({
105 layout_manager: new Clutter.BinLayout(),
106 layout_manager: new WorkspaceLayout(),
106107 clip_to_allocation: true,
107108 }),
108109 });
133134 }
134135
135136 acceptDrop(source) {
136 if (!source.realWindow)
137 if (!source.metaWindow)
137138 return false;
138139
139 let window = source.realWindow.get_meta_window();
140 this._moveWindow(window);
140 this._moveWindow(source.metaWindow);
141141 return true;
142142 }
143143
144144 handleDragOver(source) {
145 if (source.realWindow)
145 if (source.metaWindow)
146146 return DND.DragMotionResult.MOVE_DROP;
147147 else
148148 return DND.DragMotionResult.CONTINUE;
00 /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
11 /* exported init */
2 const { Clutter, GObject, St } = imports.gi;
2 const { Clutter, Graphene, GObject, St } = imports.gi;
33
44 const Main = imports.ui.main;
55 const Workspace = imports.ui.workspace;
66 const WorkspacesView = imports.ui.workspacesView;
77
8 class MyWindowOverlay extends Workspace.WindowOverlay {
9 constructor(windowClone, parentActor) {
10 super(windowClone, parentActor);
11
12 this._id = null;
13 this._text = new St.Label({
14 style_class: 'extension-windowsNavigator-window-tooltip',
15 visible: false,
16 });
17 parentActor.add_actor(this._text);
18 }
19
20 showTooltip() {
21 this._parentActor.set_child_below_sibling(this._text, null);
22 this._text.show();
23 this._text.text = (this._windowClone.slotId + 1).toString();
24 }
25
26 hideTooltip() {
27 if (this._text && this._text.visible)
28 this._text.hide();
29 }
30
31 relayout(animate) {
32 super.relayout(animate);
33
34 let [cloneX, cloneY, cloneWidth_, cloneHeight_] = this._windowClone.slot;
35
36 let textX = cloneX - 2;
37 let textY = cloneY - 2;
38 this._text.set_position(Math.floor(textX) + 5, Math.floor(textY) + 5);
39 this._parentActor.set_child_below_sibling(this._text, null);
40 }
41 }
8 const WINDOW_SLOT = 4;
429
4310 var MyWorkspace = GObject.registerClass(
4411 class MyWorkspace extends Workspace.Workspace {
6027 }
6128 }
6229
30 vfunc_allocate(box) {
31 super.vfunc_allocate(box);
32
33 if (this._tip)
34 this._tip.allocate_preferred_size(0, 0);
35 }
36
6337 showTooltip() {
64 if (!this._tip || !this._actualGeometry)
38 if (!this._tip)
6539 return;
6640 this._tip.text = (this.metaWorkspace.index() + 1).toString();
67
68 // Hand code this instead of using _getSpacingAndPadding
69 // because that fails on empty workspaces
70 let node = this.get_theme_node();
71 let padding = {
72 left: node.get_padding(St.Side.LEFT),
73 top: node.get_padding(St.Side.TOP),
74 bottom: node.get_padding(St.Side.BOTTOM),
75 right: node.get_padding(St.Side.RIGHT),
76 };
77
78 let area = Workspace.padArea(this._actualGeometry, padding);
79 this._tip.x = area.x;
80 this._tip.y = area.y;
8141 this._tip.show();
8242 this.set_child_below_sibling(this._tip, null);
8343 }
8444
8545 hideTooltip() {
86 if (!this._tip)
87 return;
88 if (!this._tip.get_parent())
89 return;
90 this._tip.hide();
46 if (this._tip)
47 this._tip.hide();
9148 }
9249
9350 getWindowWithTooltip(id) {
94 for (let i = 0; i < this._windows.length; i++) {
95 if (this._windows[i].slotId + 1 === id)
96 return this._windows[i].metaWindow;
97 }
98 return null;
51 const slot = this.layout_manager._windowSlots[id - 1];
52 return slot ? slot[WINDOW_SLOT].metaWindow : null;
9953 }
10054
10155 showWindowsTooltips() {
102 for (let i in this._windowOverlays) {
103 if (this._windowOverlays[i])
104 this._windowOverlays[i].showTooltip();
56 for (let i = 0; i < this.layout_manager._windowSlots.length; i++) {
57 if (this.layout_manager._windowSlots[i])
58 this.layout_manager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`);
10559 }
10660 }
10761
10862 hideWindowsTooltips() {
109 for (let i in this._windowOverlays) {
110 if (this._windowOverlays[i])
111 this._windowOverlays[i].hideTooltip();
112 }
63 for (let i in this.layout_manager._windowSlots) {
64 if (this.layout_manager._windowSlots[i])
65 this.layout_manager._windowSlots[i][WINDOW_SLOT].hideTooltip();
66 }
67 }
68
69 // overriding _addWindowClone to apply the tooltip patch on the cloned
70 // windowPreview
71 _addWindowClone(metaWindow) {
72 const clone = super._addWindowClone(metaWindow);
73
74 // appling the tooltip patch
75 (function patchPreview() {
76 this._text = new St.Label({
77 style_class: 'extension-windowsNavigator-window-tooltip',
78 visible: false,
79 });
80
81 this._text.add_constraint(new Clutter.BindConstraint({
82 source: this._borderCenter,
83 coordinate: Clutter.BindCoordinate.POSITION,
84 }));
85 this._text.add_constraint(new Clutter.AlignConstraint({
86 source: this._borderCenter,
87 align_axis: Clutter.AlignAxis.X_AXIS,
88 pivot_point: new Graphene.Point({ x: 0.5, y: -1 }),
89 factor: this._closeButtonSide === St.Side.LEFT ? 1 : 0,
90 }));
91 this._text.add_constraint(new Clutter.AlignConstraint({
92 source: this._borderCenter,
93 align_axis: Clutter.AlignAxis.Y_AXIS,
94 pivot_point: new Graphene.Point({ x: -1, y: 0.5 }),
95 factor: 0,
96 }));
97
98 this.add_child(this._text);
99 }).call(clone);
100
101 clone.showTooltip = function (text) {
102 this._text.set({ text });
103 this._text.show();
104 };
105
106 clone.hideTooltip = function () {
107 if (this._text && this._text.visible)
108 this._text.hide();
109 };
110
111 return clone;
113112 }
114113 });
115114
243242
244243 class Extension {
245244 constructor() {
246 this._origWindowOverlay = Workspace.WindowOverlay;
247245 this._origWorkspace = Workspace.Workspace;
248246 this._origWorkspacesView = WorkspacesView.WorkspacesView;
249247 }
250248
251249 enable() {
252 Workspace.WindowOverlay = MyWindowOverlay;
253250 Workspace.Workspace = MyWorkspace;
254251 WorkspacesView.WorkspacesView = MyWorkspacesView;
255252 }
256253
257254 disable() {
258 Workspace.WindowOverlay = this._origWindowOverlay;
259255 Workspace.Workspace = this._origWorkspace;
260256 WorkspacesView.WorkspacesView = this._origWorkspacesView;
261257 }
2929 this.connect('destroy', this._onDestroy.bind(this));
3030
3131 this._sizeChangedId = this._window.connect('size-changed',
32 this._relayout.bind(this));
32 () => this.queue_relayout());
3333 this._positionChangedId = this._window.connect('position-changed',
34 this._relayout.bind(this));
34 () => this.queue_relayout());
3535 this._minimizedChangedId = this._window.connect('notify::minimized',
36 this._relayout.bind(this));
36 this._updateVisible.bind(this));
3737 this._monitorEnteredId = global.display.connect('window-entered-monitor',
38 this._relayout.bind(this));
38 this._updateVisible.bind(this));
3939 this._monitorLeftId = global.display.connect('window-left-monitor',
40 this._relayout.bind(this));
41
42 // Do initial layout when we get a parent
43 let id = this.connect('parent-set', () => {
44 this.disconnect(id);
45 if (!this.get_parent())
46 return;
47 this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
48 this._laterId = 0;
49 this._relayout();
50 return false;
51 });
52 });
40 this._updateVisible.bind(this));
5341
5442 this._focusChangedId = global.display.connect('notify::focus-window',
5543 this._onFocusChanged.bind(this));
5745 }
5846
5947 // needed for DND
60 get realWindow() {
61 return this._window.get_compositor_private();
48 get metaWindow() {
49 return this._window;
6250 }
6351
6452 _onDestroy() {
6856 global.display.disconnect(this._monitorEnteredId);
6957 global.display.disconnect(this._monitorLeftId);
7058 global.display.disconnect(this._focusChangedId);
71 if (this._laterId)
72 Meta.later_remove(this._laterId);
7359 }
7460
7561 _onFocusChanged() {
7965 this.remove_style_class_name('active');
8066 }
8167
82 _relayout() {
68 _updateVisible() {
8369 let monitor = Main.layoutManager.findIndexForActor(this);
8470 this.visible = monitor === this._window.get_monitor() &&
8571 this._window.window_type !== Meta.WindowType.DESKTOP &&
8672 this._window.showing_on_its_workspace();
87
88 if (!this.visible)
89 return;
90
91 let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
92 let hscale = this.get_parent().allocation.get_width() / workArea.width;
93 let vscale = this.get_parent().allocation.get_height() / workArea.height;
94
95 let frameRect = this._window.get_frame_rect();
96 this.set_size(
97 Math.round(Math.min(frameRect.width, workArea.width) * hscale),
98 Math.round(Math.min(frameRect.height, workArea.height) * vscale));
99 this.set_position(
100 Math.round(frameRect.x * hscale),
101 Math.round(frameRect.y * vscale));
73 }
74 });
75
76 let WorkspaceLayout = GObject.registerClass(
77 class WorkspaceLayout extends Clutter.LayoutManager {
78 vfunc_get_preferred_width() {
79 return [0, 0];
80 }
81
82 vfunc_get_preferred_height() {
83 return [0, 0];
84 }
85
86 vfunc_allocate(container, box) {
87 const monitor = Main.layoutManager.findIndexForActor(container);
88 const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
89 const hscale = box.get_width() / workArea.width;
90 const vscale = box.get_height() / workArea.height;
91
92 for (const child of container) {
93 const childBox = new Clutter.ActorBox();
94 const frameRect = child.metaWindow.get_frame_rect();
95 childBox.set_size(
96 Math.min(frameRect.width, workArea.width) * hscale,
97 Math.min(frameRect.height, workArea.height) * vscale);
98 childBox.set_origin(
99 Math.round(frameRect.x * hscale),
100 Math.round(frameRect.y * vscale));
101 child.allocate(childBox);
102 }
102103 }
103104 });
104105
108109 super._init({
109110 style_class: 'workspace',
110111 child: new Clutter.Actor({
111 layout_manager: new Clutter.BinLayout(),
112 layout_manager: new WorkspaceLayout(),
112113 clip_to_allocation: true,
113114 }),
114115 });
139140 }
140141
141142 acceptDrop(source) {
142 if (!source.realWindow)
143 if (!source.metaWindow)
143144 return false;
144145
145 let window = source.realWindow.get_meta_window();
146 this._moveWindow(window);
146 this._moveWindow(source.metaWindow);
147147 return true;
148148 }
149149
150150 handleDragOver(source) {
151 if (source.realWindow)
151 if (source.metaWindow)
152152 return DND.DragMotionResult.MOVE_DROP;
153153 else
154154 return DND.DragMotionResult.CONTINUE;
3333 <gnome:userid>fmuellner</gnome:userid>
3434 </foaf:Person>
3535 </maintainer>
36 <maintainer>
37 <foaf:Person>
38 <foaf:name>Marge Bot</foaf:name>
39 <gnome:userid>marge-bot</gnome:userid>
40 </foaf:Person>
41 </maintainer>
3642 </Project>
00 ---
1 # SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
12 env:
23 es6: true
34 extends: 'eslint:recommended'
2324 # allow: [^vfunc_, ^on_, _instance_init]
2425 comma-dangle:
2526 - error
26 - always-multiline
27 - arrays: always-multiline
28 objects: always-multiline
29 functions: never
2730 comma-spacing:
2831 - error
2932 - before: false
8689 - error
8790 - all
8891 - conditionalAssign: false
92 nestedBinaryExpressions: false
8993 returnAssign: false
9094 no-implicit-coercion:
9195 - error
105109 no-restricted-properties:
106110 - error
107111 - object: Lang
112 property: copyProperties
113 message: Use Object.assign()
114 - object: Lang
108115 property: bind
109116 message: Use arrow notation or Function.prototype.bind()
110117 - object: Lang
111118 property: Class
112119 message: Use ES6 classes
113 - object: imports
114 property: mainloop
115 message: Use GLib main loops and timeouts
116120 no-restricted-syntax:
117121 - error
118122 - selector: >-
128132 BlockStatement[body.length=1]
129133 CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"]
130134 message: _init() that only calls super._init() is unnecessary
135 - selector: BinaryExpression[operator="instanceof"][right.name="Array"]
136 message: Use Array.isArray()
131137 no-return-assign: error
132138 no-return-await: error
133139 no-self-compare: error
164170 object-shorthand: error
165171 operator-assignment: error
166172 operator-linebreak: error
173 padded-blocks:
174 - error
175 - never
167176 # These may be a bit controversial, we can try them out and enable them later
168177 # prefer-const: error
169178 # prefer-destructuring: error
216225 ARGV: readonly
217226 Debugger: readonly
218227 GIRepositoryGType: readonly
228 globalThis: readonly
219229 imports: readonly
220230 Intl: readonly
221231 log: readonly
222232 logError: readonly
223233 print: readonly
224234 printerr: readonly
225 window: readonly
226235 parserOptions:
227 ecmaVersion: 2017
236 ecmaVersion: 2020
00 project('gnome-shell-extensions',
1 version: '3.38.1',
1 version: '40.alpha',
22 meson_version: '>= 0.44.0',
33 license: 'GPL2+'
44 )
2020 xsessiondir = join_paths(datadir, 'xsessions')
2121
2222 ver_arr = meson.project_version().split('.')
23 if ver_arr[1].to_int().is_even()
24 shell_version = '@0@.@1@'.format(ver_arr[0], ver_arr[1])
25 else
23 if ver_arr[1].version_compare('>=0')
24 shell_version = ver_arr[0]
25 else # pre-release (alpha, beta, rc)
2626 shell_version = '.'.join(ver_arr)
2727 endif
2828
8282 msgstr ""
8383 "Intenta utilitzar més espai de la pantalla per a posicionar les miniatures de "
8484 "les finestres adaptant-les a la ràtio d'aspecte de la pantalla, consolidant-"
85 "les més per a reduir la capsa que les envolta. Aquest paràmetre de "
85 "les més per a reduir la caixa que les envolta. Aquest paràmetre de "
8686 "configuració només s'aplica a l'estratègia de posicionament de finestres "
8787 "natural."
8888
77 "Project-Id-Version: gnome-shell-extensions master\n"
88 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
99 "issues\n"
10 "POT-Creation-Date: 2020-05-28 00:55+0000\n"
11 "PO-Revision-Date: 2020-07-12 18:10+0200\n"
10 "POT-Creation-Date: 2020-10-08 21:24+0000\n"
11 "PO-Revision-Date: 2020-10-17 22:14+0200\n"
1212 "Last-Translator: Fabio Tomat <[email protected]>\n"
1313 "Language-Team: Friulian <[email protected]>\n"
1414 "Language: fur\n"
1515 "MIME-Version: 1.0\n"
1616 "Content-Type: text/plain; charset=UTF-8\n"
1717 "Content-Transfer-Encoding: 8bit\n"
18 "X-Generator: Poedit 2.3.1\n"
19
20 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
18 "X-Generator: Poedit 2.4.1\n"
19
20 #: data/gnome-classic.desktop.in:3
2121 msgid "GNOME Classic"
2222 msgstr "GNOME Classic"
2323
2424 #: data/gnome-classic.desktop.in:4
2525 msgid "This session logs you into GNOME Classic"
26 msgstr "Cheste session a si invie cun GNOME classic"
26 msgstr "Cheste session ti fâs jentrâ in GNOME Classic"
2727
2828 #: extensions/apps-menu/extension.js:113
2929 msgid "Favorites"
4242 "A list of strings, each containing an application id (desktop file name), "
4343 "followed by a colon and the workspace number"
4444 msgstr ""
45 "Une liste di stringhis, ogniune a ten il ID di une aplicazion (non dal file ."
46 "desktop), seguît di doi ponts e il numar dal spazi di lavôr"
45 "Une liste di stringhis, ogniune e ten il ID di une aplicazion (non dal file ."
46 "desktop), cun daûr doi ponts e il numar dal spazi di lavôr"
4747
4848 #: extensions/auto-move-windows/prefs.js:35
4949 msgid "Workspace Rules"
6262
6363 #: extensions/drive-menu/extension.js:128
6464 msgid "Removable devices"
65 msgstr "Argagn rimovibil"
65 msgstr "Dispositîfs estraibii"
6666
6767 #: extensions/drive-menu/extension.js:155
6868 msgid "Open Files"
69 msgstr "Vierç i file"
69 msgstr "Vierç i files"
7070
7171 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
7272 msgid "Use more screen for windows"
73 msgstr "Dopre plui spazi par i balcons"
73 msgstr "Dopre plui schermi pai barcons"
7474
7575 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
7676 msgid ""
7878 "aspect ratio, and consolidating them further to reduce the bounding box. "
7979 "This setting applies only with the natural placement strategy."
8080 msgstr ""
81 "Cîr di doprâ plui puest par plaçâ lis miniaturis dai balcons, adatânsi al "
82 "rapuart di aspiet dal visôr e consolidanlis ancjemo di plui par ridusi il "
83 "spazi complessîf. Cheste impostazion a si apliche dome se l'algoritmo di "
84 "posizionament al è \"natural\"."
81 "Cîr di doprâ plui schermi par plaçâ lis miniaturis dai barcons, adatant il "
82 "rapuart di aspiet dal visôr e consolidant ancjemo di plui lis miniaturis par "
83 "ridusi il spazi complessîf. Cheste impostazion si apliche dome se "
84 "l'algoritmi di plaçament al è naturâl."
8585
8686 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
8787 msgid "Place window captions on top"
88 msgstr "Met il titul dal balcon insomp"
88 msgstr "Met il titul dal barcon parsore"
8989
9090 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
9191 msgid ""
9393 "shell default of placing it at the bottom. Changing this setting requires "
9494 "restarting the shell to have any effect."
9595 msgstr ""
96 "Se VÊR, al place i titui dai balcons insomp as relativis miniaturis, lant in "
97 "volte al compuartament normâl de shell, che lis place in bas.Cambiant cheste "
98 "impostazion a si scugne tornâ a inviâ la shell."
96 "Se VÊR, al place i titui dai barcons denant des relativis miniaturis, "
97 "sorpassant il compuartament predefinît de shell, che lis place in bas. "
98 "Cambiant cheste impostazion si scugne tornâ a inviâ la shell."
9999
100100 #: extensions/places-menu/extension.js:89
101101 #: extensions/places-menu/extension.js:93
119119
120120 #: extensions/places-menu/placeDisplay.js:359
121121 msgid "Home"
122 msgstr "Cjase"
122 msgstr "Home"
123123
124124 #: extensions/places-menu/placeDisplay.js:404
125125 msgid "Browse Network"
127127
128128 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
129129 msgid "Cycle Screenshot Sizes"
130 msgstr "Dimensions caturis di schermi ciclichis"
130 msgstr "Dimensions videadis catuardis ciclichis"
131131
132132 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
133133 msgid "Cycle Screenshot Sizes Backward"
134 msgstr "Dimensions caturis di schermi ciclichis indaûr"
134 msgstr "Dimensions videadis caturadis ciclichis indaûr"
135135
136136 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
137137 msgid "Theme name"
183183
184184 #: extensions/window-list/extension.js:734
185185 msgid "Window List"
186 msgstr "Liste balcons"
186 msgstr "Liste barcons"
187187
188188 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
189189 msgid "When to group windows"
190 msgstr "Quant ingrumâ i balcons"
190 msgstr "Cuant meti in grup i barcons"
191191
192192 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
193193 msgid ""
194194 "Decides when to group windows from the same application on the window list. "
195195 "Possible values are “never”, “auto” and “always”."
196196 msgstr ""
197 "Al decît cuant intropâ i balcons de stesse aplicazion su le liste dai "
198 "balcons. I pussibii valôrs a son “never”, “auto” e “always”."
197 "Al decît cuant meti dongje i barcons de stesse aplicazion su la liste dai "
198 "barcons. I valôrs pussibii a son “never”, “auto” e “always”."
199199
200200 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
201201 #: extensions/window-list/prefs.js:100
217217 "primary one."
218218 msgstr ""
219219 "Indiche se mostrâ la liste dai barcons su ducj i visôrs tacâts o nome sul "
220 "principâl."
220 "chel principâl."
221221
222222 #: extensions/window-list/prefs.js:29
223223 msgid "Window Grouping"
224 msgstr "Ingrumament balcons"
224 msgstr "Intropament di barcons"
225225
226226 #: extensions/window-list/prefs.js:58
227227 msgid "Never group windows"
228 msgstr "No ingrumâ i balcons"
228 msgstr "No sta meti mai in grup i barcons"
229229
230230 #: extensions/window-list/prefs.js:59
231231 msgid "Group windows when space is limited"
232 msgstr "Ingrume i balcons quanche al'è pôc puest"
232 msgstr "Met dongje i barcons cuant che il spazi al è limitât"
233233
234234 #: extensions/window-list/prefs.js:60
235235 msgid "Always group windows"
236 msgstr "Ingrume simpri i balcons"
236 msgstr "Met simpri in grup i barcons"
237237
238238 #: extensions/window-list/prefs.js:94
239239 msgid "Show on all monitors"