Mercurial > repos > other > Adwaita-Dark-Green
view gtk-3.18/gtk.scss @ 113:3a790d4649eb default tip
Fix GTK4/Adwaita outline and background issues
* Views are now used in popovers but shouldn't have
"normal" view background colour
* Flat buttons should be flat, not bordered/outlines
* Spinbuttons in lists don't need outlines on their buttons
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 01 May 2022 11:34:31 +0100 |
parents | 1373809b1c32 |
children |
line wrap: on
line source
// General guidelines: // - very unlikely you want to edit something else than _common.scss // - keep the number of defined colors to a minimum, use the color blending functions if // you need a subtle shade // - if you need to inverse a color function use the @if directive to match for dark $variant $variant: 'light'; // Import the default colours @import 'colors'; // Override some colours $base_color: #C6C6C6; $bg_color: #C6C6C6; $fg_color: #161616; $selected_bg_color: #5E7F3E; $selected_borders_color: darken($selected_bg_color, 30%); $borders_color: darken($bg_color,30%); $borders_edge: transparentize(lighten($bg_color, 30%), 0.9); $link_color: darken($selected_bg_color,10%); $link_visited_color: darken($selected_bg_color,20%); $top_hilight: $borders_edge; $scrollbar_bg_color: darken($bg_color, 7%); $sidebar_bg_color: darken($bg_color,5%); //insensitive state derived colors $insensitive_fg_color: mix($fg_color, $bg_color, 50%); $insensitive_bg_color: mix($bg_color, $base_color, 60%); $insensitive_borders_color: $borders_color; //colors for the backdrop state, derived from the main colors. $backdrop_base_color: darken($base_color, 1%); $backdrop_text_color: mix($text_color, $backdrop_base_color, 80%); $backdrop_bg_color: $bg_color; $backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 50%); $backdrop_insensitive_color: darken($backdrop_bg_color, 15%); $backdrop_selected_fg_color: $selected_fg_color; $backdrop_selected_bg_color: desaturate($selected_bg_color,100%); $backdrop_borders_color: mix($borders_color, $bg_color, 90%); $backdrop_dark_fill: mix($backdrop_borders_color, $backdrop_bg_color, 35%); $backdrop_sidebar_bg_color: darken($backdrop_bg_color,5%); $backdrop_scrollbar_bg_color: darken($backdrop_bg_color, 3%); // Add our own colours $text_input_color: #F0F0F0; $backdrop_text_input_color: darken($text_input_color, 1%); $bg_dark_color: #3D3D3D; $fg_dark_color: #dddddd; $insensitive_dark_fg_color: mix($fg_dark_color, $bg_dark_color, 50%); $titlebar_highlight: #4c4c4c; $header_button_raised_gradient_color_a: lighten($bg_dark_color, 10%); $header_button_checked: darken($bg_dark_color, 5%); $header_button_border: darken($bg_dark_color, 5%); $header_button_border_unfocused: darken($bg_dark_color, 5%); $menu_fg_dark_color: #cccccc; $focused_entry_outer: transparentize($selected_bg_color, 0.45); $bg_gradient_1: lighten($bg_color, 20%); $bg_gradient_2: lighten($bg_color, 10%); $bg_gradient_3: lighten($bg_color, 5%); $bg_prelight: $bg_gradient_1; $selected_bg_color_hover: lighten($selected_bg_color, 10%); $selected_bg_color_shade: darken($selected_bg_color, 10%); $selected_bg_border: darken($selected_bg_color, 30%); $title_fg: #fff; $header_separator: lighten($bg_dark_color, 10%); $fg_color_emphasis: darken($fg_color, 50%); $fg_color_de_emphasis: lighten($fg_color, 20%); $unfocused_fg_color: $backdrop_fg_color; $unfocused_insensitive_fg_color: lighten($insensitive_fg_color, 20%); $transparent_outline: #383436; // Import the default widgets @import 'drawing'; // Style everything @import 'common'; //Export default colours @import 'colors-public'; //Override some exported colours @define-color wm_title #{"" + $bg_dark_color}; @define-color wm_unfocused_title #{"" + $bg_dark_color}; @define-color wm_highlight shade(#{"" + $bg_dark_color}, 1.03); @define-color wm_borders_edge #{"" + $bg_dark_color}; @define-color wm_bg_a shade(#{$bg_dark_color}, 1.2); @define-color wm_bg_b #{$bg_dark_color}; @define-color wm_button_hover_color_a shade(#{$bg_dark_color}, 1.3); @define-color wm_button_hover_color_b #{$bg_dark_color}; @define-color wm_button_active_color_a shade(#{$bg_dark_color}, 0.85); @define-color wm_button_active_color_b shade(#{$bg_dark_color}, 0.89); @define-color wm_button_active_color_c shade(#{$bg_dark_color}, 0.9); // And now do our own overrides of styling *:insensitive { -gtk-image-effect: highlight; } /*************** * Header bars * ***************/ .header-bar, .titlebar, GtkApplicationWindow.fullscreen { color: $title_fg; border-width: 0 0 1px; border-style: solid; background-image: linear-gradient(to bottom, lighten($bg_dark_color, 3%) 0%, $bg_dark_color 45%); border-color: shade($bg_dark_color, 0.90); box-shadow: inset 0 2px $titlebar_highlight, inset 0 1px $header_button_border; background-color: $bg_dark_color; } .header-bar:backdrop, .titlebar:backdrop, GtkApplicationWindow.fullscreen:backdrop { color: $fg_dark_color; box-shadow: none; background-color: $bg_dark_color; background-image: none; border-color: darken($bg_dark_color, 10%); } /* this is the default titlebar that is added by GTK * when client-side decorations are in use and the application * did not set a custom titlebar. */ .header-bar .separator, .titlebar .separator { border-width: 1px; border-style: solid; border-image: none; color: $header_separator; } .titlebar.default-decoration { border: none; box-shadow: none; } .titlebar .title { font: Bold 11; background: none; color: $title_fg; } .titlebar .title:backdrop { color: $fg_dark_color; } .header-bar .button.titlebutton:active, .titlebar .button.titlebutton:active, .header-bar .button.titlebutton:checked, .titlebar .button.titlebutton:checked .header-bar .button:active, .header-bar .button.titlebutton:active, .titlebar .button.titlebutton:active, .header-bar .button:checked, .header-bar .button.titlebutton:checked, .titlebar .button.titlebutton:checked, .header-bar .button:active:hover, .header-bar .button.titlebutton:active:hover, .titlebar .button.titlebutton:active:hover, .header-bar .button:checked:hover, .header-bar .button.titlebutton:checked:hover, .titlebar .button.titlebutton:checked:hover, .header-bar .button, .header-bar .titlebutton.button, .titlebar .titlebutton.button { color: $fg_dark_color; background-image: linear-gradient(to bottom, $header_button_raised_gradient_color_a, $bg_dark_color); text-shadow: 0 1px transparentize($header_button_raised_gradient_color_a, 0.5); icon-shadow: 0 1px transparentize($header_button_raised_gradient_color_a, 0.5); border-color: $header_button_border; outline-color: $header_button_raised_gradient_color_a; box-shadow: inset 0 1px $header_button_raised_gradient_color_a, 0 1px $header_button_raised_gradient_color_a; } .header-bar .titlebutton.button, .titlebar .titlebutton.button { border-color: transparent; box-shadow: none; background-image: none; } .header-bar .button:insensitive, .header-bar .titlebutton.button:insensitive, .titlebar .titlebutton.button:insensitive, .header-bar .button:insensitive:backdrop, .header-bar .titlebutton.button:insensitive:backdrop, .titlebar .titlebutton.button:insensitive:backdrop { color: $insensitive_dark_fg_color; background-image: none; box-shadow: none; } .header-bar .button:hover, .header-bar .button.titlebutton:hover, .titlebar .button.titlebutton:hover { color: shade($fg_dark_color, 1.3); outline-color: $header_button_raised_gradient_color_a; border-color: $header_button_border; background-image: linear-gradient(to bottom, shade($header_button_raised_gradient_color_a, 1.1), shade($bg_dark_color, 1.1)); text-shadow: 0 1px transparentize($header_button_raised_gradient_color_a, 0.5); icon-shadow: 0 1px transparentize($header_button_raised_gradient_color_a, 0.5); box-shadow: inset 0 1px $header_button_raised_gradient_color_a, 0 1px $header_button_raised_gradient_color_a; } .header-bar .button:active, .header-bar .button.titlebutton:active, .titlebar .button.titlebutton:active, .header-bar .button:checked, .header-bar .button.titlebutton:checked, .titlebar .button.titlebutton:checked, .header-bar .button:active:hover, .header-bar .button.titlebutton:active:hover, .titlebar .button.titlebutton:active:hover, .header-bar .button:checked:hover, .header-bar .button.titlebutton:checked:hover, .titlebar .button.titlebutton:checked:hover { color: $title_fg; background-image: linear-gradient(to bottom, $bg_dark_color, $header_button_checked); } .header-bar .button:backdrop, .header-bar .button.titlebutton:backdrop, .titlebar .button.titlebutton:backdrop { background-image: none; background-color: $bg_dark_color; border-color: transparent; box-shadow:none; text-shadow: none; icon-shadow: none; color: $fg_dark_color; } .header-bar .button:backdrop { border-color: $header_button_border_unfocused } .header-bar .button:active:backdrop, .header-bar .button.titlebutton:active:backdrop, .titlebar .button.titlebutton:active:backdrop, .header-bar .button:checked:backdrop, .header-bar .button.titlebutton:checked:backdrop, .titlebar .button.titlebutton:checked:backdrop, .header-bar .button:active:hover:backdrop, .header-bar .button.titlebutton:active:hover:backdrop, .titlebar .button.titlebutton:active:hover:backdrop, .header-bar .button:checked:hover:backdrop, .header-bar .button.titlebutton:checked:hover:backdrop, .titlebar .button.titlebutton:checked:hover:backdrop { color: $fg_dark_color; background-image: none; background-color: $header_button_checked; box-shadow:none; text-shadow: none; icon-shadow: none; } .header-bar .titlebutton.button:backdrop:active, .titlebar .titlebutton.button:backdrop:active, .header-bar .titlebutton.button:backdrop:checked, .titlebar .titlebutton.button:backdrop:checked { border-color: $header_button_border_unfocused } .header-bar .suggested-action.button, .header-bar .suggested-action.titlebutton.button, .titlebar .suggested-action.titlebutton.button { color: $title_fg; background-color: mix($selected_bg_color, $bg_dark_color, 80%); background-image: linear-gradient(to bottom, mix($selected_bg_color, $header_button_raised_gradient_color_a, 80%), mix($selected_bg_color, $bg_dark_color, 80%)); text-shadow: 0 1px transparentize($header_button_raised_gradient_color_a, 0.5); icon-shadow: 0 1px transparentize($header_button_raised_gradient_color_a, 0.5); border-color: mix($selected_bg_color, $header_button_border, 30%); outline-color: $header_button_raised_gradient_color_a; box-shadow: inset 0 1px $header_button_raised_gradient_color_a, 0 1px $header_button_raised_gradient_color_a; } .header-bar .suggested-action.button:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop, .titlebar .suggested-action.titlebutton.button:backdrop { background-image: none; text-shadow: none; icon-shadow: none; border-color: transparent; outline-color: transparent; box-shadow: none; } .header-bar .suggested-action.button:hover, .header-bar .suggested-action.button.titlebutton:hover, .titlebar .suggested-action.button.titlebutton:hover { color: shade($fg_dark_color, 1.3); outline-color: $header_button_raised_gradient_color_a; border-color: $header_button_border; background-image: linear-gradient(to bottom, shade(mix($selected_bg_color, $header_button_raised_gradient_color_a, 80%), 1.1), shade(mix($selected_bg_color,$bg_dark_color,80%), 1.1)); text-shadow: 0 1px transparentize($header_button_raised_gradient_color_a, 0.5); icon-shadow: 0 1px transparentize($header_button_raised_gradient_color_a, 0.5); box-shadow: inset 0 1px $header_button_raised_gradient_color_a, 0 1px $header_button_raised_gradient_color_a; } .header-bar .suggested-action.titlebutton.button:backdrop:insensitive, .titlebar .suggested-action.titlebutton.button:backdrop:insensitive, .header-bar .suggested-action.button:backdrop:insensitive, .titlebar .suggested-action.button:backdrop:insensitive { color: mix($fg_dark_color, $bg_dark_color, 60%); background-image: none; background-color: $bg_dark_color; border-color: transparent; } .header-bar .suggested-action.titlebutton.button:insensitive, .titlebar .suggested-action.titlebutton.button:insensitive, .header-bar .suggested-action.button:insensitive, .titlebar .suggested-action.button:insensitive { color: mix($fg_dark_color, $bg_dark_color, 60%); background-image: linear-gradient(to bottom, $header_button_raised_gradient_color_a, $bg_dark_color); background-color: $bg_dark_color; border-color: transparent; } .titlebar .header-bar-separator, .titlebar > GtkBox > .separator.vertical, GtkPlacesSidebar.sidebar .view .titlebar > GtkBox > .vertical.separator:backdrop, .header-bar .header-bar-separator, .header-bar > GtkBox > .separator.vertical, GtkPlacesSidebar.sidebar .view .header-bar > GtkBox > .vertical.separator:backdrop { border-image: linear-gradient(to bottom, transparentize($header_separator, 0), $header_separator 30%, $header_separator 70%, transparentize($header_separator, 0) 100%) 0 1/0 1px stretch; } .titlebar .header-bar-separator:backdrop, .titlebar > GtkBox > .separator.vertical:backdrop, .header-bar .header-bar-separator:backdrop, .header-bar > GtkBox > .separator.vertical:backdrop { border-image: linear-gradient(to bottom, transparentize($header_separator, 0.5)) 0 1/1px 1px; } column-header .button, column-header .header-bar .button.titlebutton, .header-bar column-header .button.titlebutton, column-header .titlebar .button.titlebutton, .titlebar column-header .button.titlebutton { color: $fg_color; background-color: $bg_gradient_2;} column-header .button:hover, column-header .header-bar .button.titlebutton:hover, .header-bar column-header .button.titlebutton:hover, column-header .titlebar .button.titlebutton:hover, .titlebar column-header .button.titlebutton:hover { color: $fg_color_emphasis; } // Somehow, our notebook tabs don't appear to be classed ".label", // so we have to bodge it with GtkLabel directly .notebook { // Through me you go to the grief wracked city; // Through me you go to everlasting pain; // Through me you go a pass among lost souls. // ... // Abandon all hope — Ye Who Enter Here tab { GtkLabel { //tab text padding: 0 2px; // needed for a nicer focus ring font-weight: bold; color: $insensitive_fg_color; &:backdrop, &.prelight-page:backdrop { color: mix($backdrop_fg_color, $backdrop_insensitive_color, 50%); } } .prelight-page GtkLabel, GtkLabel.prelight-page { // prelight tab text color: mix($fg_color, $insensitive_fg_color, 50%); &:backdrop { // FIXME, it's the same as .label:backdrop up here color: mix($backdrop_fg_color, $backdrop_insensitive_color, 50%); } } .active-page GtkLabel, GtkLabel.active-page { // active tab text color: $fg_color; &:backdrop { color: $backdrop_fg_color; } } } } .popover { background-color: $bg_color; } .popover .menuitem.button { border: none; box-shadow: none; outline: none; } .menu { background-color: $bg_color; .csd & { border: 1px solid $borders_color; } } .background { background-color: $bg_color; } .entry, .linked.vertical > .entry, .linked.vertical > .entry:first-child, .linked.vertical > .entry:last-child { background-image: entry_gradient($text_input_color); background-color: $text_input_color; &:focus { background-image: entry_gradient($text_input_color); } &:insensitive { background-image: linear-gradient(to bottom, $insensitive_bg_color); } &:backdrop { background-image: none; background-color: $backdrop_text_input_color; } &:backdrop:insensitive { background-image: linear-gradient(to bottom, $insensitive_bg_color); } } GtkPaned { border: 1px solid $borders_color; } GtkPlacesSidebar.sidebar .view { color: $fg_color; background-color: transparent; } .view, .list, .list-row, .list-row.button { color: $text_color; background-color: $text_input_color; &:backdrop, &:backdrop:hover { color: $backdrop_text_color; background-color: $backdrop_text_input_color; } &:selected { color: $selected_fg_color; background-color: $selected_bg_color; } &:hover { background-color: mix($fg_color, $text_input_color, 5%); } &:active { box-shadow: inset 0 2px 2px -2px transparentize(black, 0.8); } &:selected { &:active { box-shadow: inset 0 2px 3px -1px transparentize(black, 0.5); } &:hover { background-color: mix($fg_color, $selected_bg_color, 10%); } &:backdrop { background-color: $selected_bg_color; } } } .list-row { // Set sidebar items back to something reasonable &.sidebar-item { background-color: $sidebar_bg_color; border-color: $borders_color; &:backdrop, &:backdrop:hover { background-color: $backdrop_sidebar_bg_color; border-color: $backdrop_borders_color; } // let's take care of background colors &:hover { background-color: mix($fg_color, $base_color, 5%); } &:active { box-shadow: inset 0 2px 2px -2px transparentize(black, 0.8); } &:selected { background-color: $selected_bg_color; &:active { box-shadow: inset 0 2px 3px -1px transparentize(black, 0.5); } &:hover { background-color: mix($fg_color, $selected_bg_color, 10%); } &:backdrop { background-color: $selected_bg_color; } } } } .sidebar .list { background-color: $sidebar_bg_color; border-color: $borders_color; &:backdrop { background-color: $backdrop_sidebar_bg_color; border-color: $backdrop_borders_color; } } /*.list .list-row.button { &:hover, &:backdrop:insensitive { background-color: rgba(0,0,0,0); } }*/ /*GtkPlacesSidebar .separator { color: $insensitive_fg_color; }*/ // Fix the rubberband background after we gave lists and views a lighter background .view.rubberband { background-color: transparentize($selected_bg_color,0.8); } .menubar { background-color: $bg_dark_color; color: $menu_fg_dark_color; box-shadow: inset 0 -1px transparentize(black, 0.9); &:backdrop { background-color: $bg_dark_color; } } .menubar, .header-bar { & .menu { background-color: $bg_dark_color; color: $menu_fg_dark_color; border-color: $header_button_border; } & > .menuitem { &:hover { //Seems like it :hover even with keyboard focus box-shadow: inset 0 -3px $selected_bg_color; color: $selected_bg_color } &:insensitive { color: $insensitive_fg_color; box-shadow: none; } } } .tweak-group .button.list-row, .tweak-categories .tweak-category.list-row { color: $fg_color; background-color: $bg_color; &:hover { background-color: mix($fg_color, $base_color, 5%); } &:backdrop { background-color: $backdrop_bg_color } &:selected { background-color: $selected_bg_color; color: lighten($selected_fg_color, 20%); &:hover { background-color: mix($fg_color, $selected_bg_color, 10%); } } } .floating-bar { opacity: 0.9; color: $text_color; background-color: $text_input_color; border: 1px solid $borders_color; @each $tb,$tb_corner in ('top','bottom'), ('bottom','top') { @each $lr,$lr_corner in ('left','right'), ('right','left') { &.#{$tb}.#{$lr} { border-#{$tb_corner}-#{$lr_corner}-radius: 3px; border-#{$tb}-width: 0; border-#{$lr}-width: 0; } } } } .menu .menuitem.check, .menu .menuitem.radio { color: $fg_dark_color; } /* Fix Meld dialog buttons and try not to break anything else */ /* FIXME: These should really be joined, but as of v3.18 they're spaced .message-dialog.csd .dialog-action-area .button, .message-dialog.csd .dialog-action-area .button:backdrop, .message-dialog.csd .dialog-action-area .button:hover { border-bottom-style: solid; border-right-style: solid; &:last-child { border-right-style: solid; border-top-right-radius: 7px; } &:first-child { border-left-style: solid; border-top-left-radius: 7px; } &:hover, &:backdrop { border-bottom-style: solid; } } /* And put "linked" buttons back to Adwaita style */ .message-dialog.csd .dialog-action-area.linked .button { border-bottom-style: none; border-right-style: solid; &:last-child { border-right-style: none; border-top-right-radius: 0; } &:first-child { border-left-style: none; border-top-left-radius: 0; } &:hover, &:backdrop { border-bottom-style: none; } } /* Fix tree view progress bars */ GtkTreeView.view { &.progressbar { // progress bar in treeviews color: $selected_fg_color; background-color: $selected_bg_color; &:selected { color: darken($selected_bg_color,20%); &:backdrop { color: darken($selected_bg_color,20%); } } &:backdrop { @if $variant == 'light' { color: $backdrop_base_color; } @else { border-color: $backdrop_base_color; } background-image: none; box-shadow: none; } } } /* * Fix text views that don't specify a class. * Happens mainly in Meld when viewing single files */ GtkTextView { background-color: #eee } /* * Fix GTK3.18 change that makes .list-row.button items look like buttons */ .list-row.button, .list-row.button:backdrop, .list-row.button:backdrop:active, .list-row.button:backdrop:checked, .list-row.button:backdrop:insensitive, .list-row.button:backdrop:insensitive:active, .list-row.button:backdrop:insensitive:checked, .list-row.button:insensitive:active, .list-row.button:insensitive:checked { // reset button inherited stuff @extend %undecorated_button; background-color: transparentize($base_color,1); // for the transition border-style: none; // I need no borders here border-radius: 0; // and no rounded corners box-shadow: none; // and no box-shadow }