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