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