A fork of the Materia GTK theme.

Important information: Google announced that, from September 2026, Android devices will require ALL apps to be signed by Google, effectively leading to an iOS situation. Value your right to a computer that does what you want; do not tolerate this monopolistic practice! Contact me if you don't understand why it is bad. Click to learn more.

 _budgie.scss

View raw Download
text/plain • 12.79 kiB
ASCII text
        
            
1
// based css:
2
// https://github.com/solus-project/budgie-desktop/tree/master/src/theme
3
4
/******************
5
* Budgie Desktop *
6
******************/
7
// Container for both the "panel" area and the shadow. Wise to keep
8
// this transparent..
9
.budgie-container { background-color: transparent; }
10
11
.budgie-settings-window buttonbox.inline-toolbar {
12
border-style: none none solid;
13
14
button {
15
border-radius: $corner-radius;
16
17
@extend %button-flat-basic;
18
}
19
}
20
21
.budgie-popover {
22
border-style: solid;
23
border-width: 1px;
24
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.2) rgba(0, 0, 0, 0.3);
25
border-radius: $corner-radius + 1px;
26
box-shadow: $shadow-z4;
27
background-color: $surface;
28
29
.container { padding: 2px; }
30
31
border { border: none; }
32
33
list { background-color: transparent; }
34
35
row {
36
padding: 0;
37
38
&:hover { box-shadow: none; }
39
}
40
41
button.flat:not(.image-button) {
42
min-height: $menuitem-size;
43
padding: 0 8px;
44
color: $text;
45
font-weight: normal;
46
47
&:disabled { color: $text-disabled; }
48
}
49
50
&.budgie-menu {
51
.container { padding: 0; }
52
53
.sidebar,
54
scrollbar,
55
entry.search { background-color: transparent; }
56
57
entry.search {
58
border-bottom: 1px solid $divider;
59
border-image: none;
60
border-radius: 0;
61
box-shadow: none;
62
font-size: 120%;
63
}
64
65
button.flat:not(.image-button) {
66
min-height: 32px;
67
padding: 0 8px;
68
border-radius: 0;
69
70
@include list-item;
71
72
&:checked { @extend %selected_items; }
73
74
&:checked:disabled { background-color: transparent; } // remove pointless indicator
75
}
76
}
77
78
&.user-menu {
79
.container { padding: 8px; }
80
81
separator { margin: 4px 0; }
82
}
83
84
&.sound-popover {
85
separator { margin: 3px 0; }
86
}
87
88
&.night-light-indicator {
89
.container { padding: 8px; }
90
}
91
92
&.places-menu {
93
.container { padding: 8px; }
94
95
// FIXME: untested
96
.message-bar {
97
// margin-bottom: 4px;
98
}
99
100
.name-button {
101
image {
102
&:dir(ltr) { margin-right: 8px - 5px; }
103
&:dir(rtl) { margin-left: 8px - 5px; }
104
}
105
}
106
107
.unmount-button {
108
margin: ($menuitem-size - $small-size) / 2;
109
padding: 0;
110
}
111
112
.places-section-header {
113
}
114
115
.places-list:not(.always-expand) {
116
margin-top: 4px;
117
padding-top: 4px;
118
border-top: 1px solid $divider;
119
}
120
121
// FIXME: untested
122
.unlock-area {
123
entry {
124
}
125
126
button {
127
}
128
}
129
130
// use such sizes for consistency with other hard-coded dim-label sizes
131
.alternative-label {
132
padding: 3px;
133
font-size: 15px;
134
}
135
}
136
137
&.workspace-popover {
138
.container { padding: 8px; }
139
140
separator { margin: 4px 0; }
141
142
flowboxchild { padding: 0; }
143
}
144
}
145
146
// FIXME: workspace has unnecessary/unknown margin
147
.workspace-switcher {
148
.workspace-layout {
149
border: 0 solid on($panel, divider);
150
151
.top &,
152
.bottom & {
153
&:dir(ltr) { border-left-width: 1px; }
154
155
&:dir(rtl) { border-right-width: 1px; }
156
}
157
158
.left &,
159
.right & { border-top-width: 1px; }
160
}
161
162
.workspace-item,
163
.workspace-add-button {
164
border: 0 solid on($panel, divider);
165
166
.top &,
167
.bottom & {
168
&:dir(ltr) { border-right-width: 1px; }
169
170
&:dir(rtl) { border-left-width: 1px; }
171
}
172
173
.left &,
174
.right & { border-bottom-width: 1px; }
175
}
176
177
.workspace-item {
178
transition: $transition;
179
180
&.current-workspace { background-color: $overlay-checked; }
181
}
182
183
.workspace-add-button {
184
&:hover { box-shadow: none; }
185
186
&:active { background-image: none; }
187
188
&:active image { margin: 1px 0 -1px; }
189
}
190
191
.workspace-icon-button {
192
.budgie-panel & { // to overwrite the .budgie-panel button style below
193
min-height: 24px;
194
min-width: 24px;
195
padding: 0;
196
border-radius: $corner-radius;
197
}
198
}
199
}
200
201
// Menu Button
202
button.budgie-menu-launcher {
203
// padding: 0 2px;
204
}
205
206
// Raven Trigger
207
button.raven-trigger {
208
// padding: 0 4px;
209
}
210
211
// Panel
212
.budgie-panel {
213
transition: background-color $duration $ease-out;
214
background-color: $panel;
215
color: on($panel, text2);
216
font-weight: 500;
217
218
&.transparent { background-color: $scrim; }
219
220
button {
221
min-height: 16px;
222
min-width: 16px;
223
padding: 0;
224
border-radius: 0;
225
226
@include ink-color(on($panel, text2));
227
228
&:disabled { color: on($panel, text2-disabled); }
229
230
&:checked {
231
color: on(dark);
232
233
&:disabled { color: on(dark, text-disabled); }
234
}
235
}
236
237
&.horizontal button { padding: 0 4px; }
238
239
&.vertical button { padding: 4px 0; }
240
241
separator { background-color: on($panel, stroke); }
242
243
// used to indicate unread notifications
244
.alert { color: on($panel, primary); }
245
246
// End Section needs to be fancy
247
.end-region {
248
// background-color: rgba(0,0,0,0.2);
249
}
250
251
// budgie-pixel-saver-applet
252
.titlebar:not(headerbar) {
253
min-height: 0;
254
padding: 0;
255
box-shadow: none;
256
background-color: transparent;
257
color: on($panel);
258
259
button:not(.suggested-action):not(.destructive-action) {
260
color: on($panel, text2);
261
}
262
}
263
264
// Tasklist
265
#tasklist-button {
266
padding: 0 4px;
267
268
@extend %underscores;
269
}
270
271
&.vertical #tasklist-button { min-height: 32px; }
272
273
// Icon Tasklist
274
button.flat.launcher {
275
padding: 0;
276
277
@extend %underscores;
278
279
// for indicator colors
280
&:not(:checked) {
281
color: on($panel, text-disabled);
282
283
&:disabled { color: on($panel, text2-disabled); }
284
}
285
}
286
287
.unpinned button.flat.launcher,
288
.pinned button.flat.launcher.running { @extend %underscores-checked; }
289
}
290
291
$underscores-list:
292
(top, center calc(1px), 2 0 0 0 / 2px 0 0 0),
293
(bottom, center calc(100% - 1px), 0 0 2 0 / 0 0 2px 0),
294
(left, calc(1px) center, 0 0 0 2 / 0 0 0 2px),
295
(right, calc(100% - 1px) center, 0 2 0 0 / 0 2px 0 0);
296
297
%underscores {
298
@each $pos, $b_pos, $b_wid in $underscores-list {
299
.#{$pos} & {
300
& {
301
border-image: radial-gradient(circle closest-corner at #{$b_pos},
302
currentColor 0%,
303
transparent 0%)
304
0 0 0 0 / 0 0 0 0;
305
}
306
307
@at-root %underscores-checked,
308
&:checked {
309
border-image: radial-gradient(circle closest-corner at #{$b_pos},
310
currentColor 100%,
311
transparent 0%)
312
#{$b_wid};
313
}
314
}
315
}
316
}
317
318
frame.raven-frame > border {
319
border-style: none;
320
box-shadow: $shadow-z16;
321
}
322
323
$pos_list: (top: bottom, bottom: top, left: right, right: left);
324
325
@each $pos, $b_pos in $pos_list {
326
// Panel borders
327
// .#{$pos} .budgie-panel { border-#{$b_pos}: 1px solid $divider; }
328
329
// Raven borders
330
.#{$pos} frame.raven-frame > border {
331
margin-#{$b_pos}: 32px;
332
// border-#{$b_pos}: 1px solid $divider;
333
}
334
335
// Shadows
336
// .#{$pos} .shadow-block { background-image: linear-gradient(to $b_pos, $divider, transparent); }
337
}
338
339
// Raven
340
.raven {
341
background-color: $surface;
342
343
list { background-color: transparent; }
344
345
> box:not(:only-child) { margin-bottom: -10px; } // remove extra space between box and .raven-header.bottom
346
347
.raven-header {
348
min-height: $medium-size;
349
padding: 3px;
350
351
// Adopt tabs style only for .top
352
&.top {
353
padding: 0;
354
border-bottom: 1px solid $divider;
355
356
stackswitcher.linked > button {
357
@extend %button-flat-activatable;
358
359
margin: -4px 0 -5px; // remove unwanted vertical margins
360
padding: 0 16px;
361
min-height: $large-size;
362
border-image: radial-gradient(circle closest-corner at center calc(100% - 1px),
363
$primary 0%,
364
transparent 0%)
365
0 0 0 / 0 0 0px;
366
border-radius: 0;
367
368
&:checked {
369
border-image: radial-gradient(circle closest-corner at center calc(100% - 1px),
370
$primary 100%,
371
transparent 0%)
372
0 0 2 / 0 0 2px;
373
background-color: transparent;
374
}
375
}
376
}
377
378
&.bottom { border-top: 1px solid $divider; }
379
}
380
381
stack {
382
.raven-header { margin-top: -6px; } // remove extra space in Notifications stack
383
384
scrolledwindow .raven-header { margin-top: -8px; } // remove extra spaces in Applets stack
385
}
386
387
.expander-button { border-radius: $circular-radius; }
388
389
.raven-background {
390
// &.middle { border-bottom-style: none; } // applet background between two headers
391
392
// Adopt Choice chips style
393
stackswitcher.linked > button {
394
@extend %button-flat-activatable;
395
396
margin: -2px 8px 9px;
397
padding: 0 12px;
398
min-height: 32px;
399
border-radius: $circular-radius;
400
background-color: $fill;
401
font-weight: normal;
402
403
&:checked { @include ink-color($primary); }
404
405
&:not(:first-child) { margin-left: 0; }
406
}
407
408
// Default music icon
409
> overlay > widget > image { color: $fill; }
410
}
411
412
revealer > .raven-background { border-bottom: 1px solid $divider; }
413
414
.raven-header + .raven-background { border-top: 1px solid $divider; }
415
416
// Application block in Notifications stack
417
viewport.frame > list > row {
418
// Remove all effects. This should be just a container.
419
padding: 0;
420
box-shadow: none;
421
background: none;
422
423
&:not(:first-child) { border-top: 1px solid $divider; }
424
425
> box {
426
// Remove awkward hard-coded margins
427
margin-top: -5px;
428
margin-left: -5px;
429
margin-bottom: -5px;
430
431
// Application header
432
> box {
433
padding: 6px;
434
margin-bottom: -10px; // Remove hard-coded spacing
435
}
436
437
// Notifications
438
> list > row {
439
padding: 8px;
440
441
> box {
442
margin-bottom: -5px; // Remove hard-coded margin-bottom
443
444
> box {
445
// Title
446
> label { font-weight: bold; }
447
448
// Close button
449
> button.image-button { padding: 0; }
450
}
451
452
> label {
453
margin-top: -6px; // For less spacing: 10 -> 4
454
font-size: smaller;
455
}
456
}
457
}
458
}
459
}
460
461
.powerstrip button {
462
margin: 2px 0 1px;
463
padding: ($large-size - 24px) / 2;
464
}
465
466
.option-subtitle { font-size: smaller; }
467
}
468
469
// Calendar
470
calendar.raven-calendar {
471
// padding: 3px;
472
border-style: none;
473
background-color: transparent;
474
475
&:selected {
476
@extend %selected_items;
477
478
border-radius: $corner-radius;
479
}
480
}
481
482
// MPRIS Applet
483
.raven-mpris {
484
background-color: $scrim;
485
color: on($scrim);
486
487
label { min-height: 24px; }
488
489
button.image-button {
490
padding: ($large-size - 24px) / 2;
491
492
@include ink-color(on($scrim, text2));
493
}
494
}
495
496
// Notifications
497
.budgie-notification-window { background-color: transparent; }
498
499
.budgie-notification {
500
.notification-title { font-size: 120%; }
501
502
.notification-body { color: $text2; }
503
}
504
505
// On Screen Display in Budgie
506
.budgie-osd-window {
507
@extend .budgie-notification-window;
508
}
509
510
// Internal part of the OSD
511
.budgie-osd {
512
.budgie-osd-text { font-size: 120%; }
513
}
514
515
// Alt+tab switcher in Budgie
516
.budgie-switcher-window {
517
@extend .budgie-notification-window;
518
}
519
520
// Internal part of the Switcher
521
.budgie-switcher {
522
@extend .budgie-notification;
523
}
524
525
.drop-shadow {
526
margin: 5px 9px;
527
padding: 3px;
528
border-radius: $corner-radius;
529
box-shadow: $shadow-z4, inset 0 1px highlight($surface);
530
background-color: $surface;
531
532
button {
533
@extend %button-flat;
534
535
&.text-button:not(:disabled) { @include ink-color($primary); }
536
}
537
538
.linked > button { margin-right: $container-padding; }
539
}
540
541
%budgie_dialog {
542
border-radius: $corner-radius;
543
box-shadow: inset 0 1px highlight($surface);
544
background-color: $surface;
545
546
decoration { border-radius: $corner-radius; }
547
}
548
549
// Session Dialog
550
.budgie-session-dialog {
551
@extend %budgie_dialog;
552
553
> box { padding: 8px; }
554
555
// Hide power icon
556
image {
557
margin: -8px;
558
-gtk-icon-transform: scale(0);
559
}
560
561
label:not(:last-child),
562
.dialog-title {
563
margin-bottom: 8px;
564
font-size: 20px;
565
font-weight: 500;
566
}
567
568
.dialog-title + label { color: $text2; }
569
570
.linked.horizontal > button {
571
@extend %button-flat;
572
573
&:not(:last-child) { margin-right: 8px; }
574
575
&:not(:disabled) { @include ink-color($primary); }
576
}
577
}
578
579
// PolKit Dialog
580
.budgie-polkit-dialog {
581
@extend %budgie_dialog;
582
583
.message { color: $text2; }
584
585
.failure { color: $error; }
586
}
587
588
// Run Dialog
589
.budgie-run-dialog {
590
@extend %budgie_dialog;
591
592
entry.search {
593
font-size: 120%;
594
padding: $container-padding 8px + $container-padding;
595
border-image: none;
596
box-shadow: none;
597
background-color: transparent;
598
}
599
600
list {
601
padding: 4px 0;
602
background-color: transparent;
603
604
.dim-label { color: inherit; }
605
}
606
607
scrolledwindow { border-top: 1px solid $divider; }
608
609
scrollbar {
610
&.right,
611
&.bottom {
612
border-bottom-right-radius: $corner-radius;
613
}
614
615
&.left,
616
&.bottom {
617
border-bottom-left-radius: $corner-radius;
618
}
619
}
620
}
621