From 95e141e47e826480ec988fd3c515f1cdd9ea86bc Mon Sep 17 00:00:00 2001 From: Jakub Steiner Date: Fri, 24 Oct 2014 01:04:34 +0200 Subject: [PATCH] theme: notifications & message tray --- data/gnome-shell-theme.gresource.xml | 1 - data/theme/_common.scss | 184 +++++++++++ data/theme/_gnome-shell-old.scss | 285 ----------------- data/theme/gnome-shell.css | 416 +++++++++++-------------- data/theme/message-tray-background.png | Bin 25454 -> 0 bytes 5 files changed, 372 insertions(+), 514 deletions(-) delete mode 100644 data/theme/message-tray-background.png diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml index 9b5b51e89..5b15c940e 100644 --- a/data/gnome-shell-theme.gresource.xml +++ b/data/gnome-shell-theme.gresource.xml @@ -18,7 +18,6 @@ gnome-shell.css gnome-shell-high-contrast.css logged-in-indicator.svg - message-tray-background.png more-results.svg noise-texture.png page-indicator-active.svg diff --git a/data/theme/_common.scss b/data/theme/_common.scss index d31dabc6e..6775ca7ab 100644 --- a/data/theme/_common.scss +++ b/data/theme/_common.scss @@ -656,6 +656,190 @@ StScrollBar { /* NOTIFICATIONS & MESSAGE TRAY */ +#message-tray { + background: darken($bg_color,10%) url("noise-texture.png"); + background-repeat: repeat; + height: 72px; + box-shadow: inset 0 2px 4px rgba(0,0,0,0.5); + .message-tray-summary { height: 72px; } + + .message-tray-menu-button { + StIcon { + padding: 0 20px; + color: $fg_color; + icon-size: 24px; + opacity: 1; + } + &:hover StIcon { color: lighten($fg_color, 15%); } + &:active StIcon { color: lighten($selected_bg_color, 10%); } + } + .no-messages-label { color: darken($fg_color,10%); } +} + .url-highlighter { link-color: $selected_bg_color; } + + // Banners + .notification { + font-size: 11pt; + width: 34em; + border-radius: 6px 6px 0 0; + background-color: transparentize(darken($osd_bg_color,8%),.05); + border: 1px solid $osd_borders_color; + border-bottom-width: 0; + //box-shadow: 0 1px 4px black; + spacing-rows: 4px; + padding: 8px 8px 4px 8px; + spacing-columns: 10px; + &.multi-line-notification { padding-bottom: 8px; } + } + .notification-unexpanded { + // We want to force the actor at a specific size, irrespective + // of its minimum and preferred size, so we override both + min-height: 36px; + height: 36px; + } + // We use row-span = 2 for the image cell, which prevents its height preferences to be + // taken into account during allocation, so its height ends up being limited by the height + // of the content in the other rows. To avoid showing a stretched image, we set the minimum + // height of the table to be ICON_SIZE + IMAGE_SIZE + spacing-rows = 24 + 125 + 10 = 159 + .notification-with-image { + min-height: 159px; + } + .notification-body { spacing: 5px; } + .notification-actions { + paddinf-top: 18px; + spacing: 6px; + } + //Message tray items + .summary-source { + border-radius: 4px; + padding: 6px; + transition-duration: 100ms; + } + .summary-source-button { + &:hover .summary-source, + &:selected .summary-source, + &:focus .summary-source { background-color: lighten($bg_color,2%); } + } + .summary-source-counter { + font-size: 10pt; + font-weight: bold; + height: 2.4em; width: 2.4em; + -shell-counter-overlap-x: 13px; + -shell-counter-overlap-y: 13px; + background-color: $selected_bg_color; + border: 2px solid $fg_color; + box-shadow: 0 2px 2px rgba(0,0,0,0.5); + } + + //Message tray popovers + .summary-boxpointer { + -arrow-border-radius: 15px; + -arrow-background-color: transparentize(darken($osd_bg_color,8%),.05); + -arrow-base: 36px; + -arrow-rise: 18px; + color: $fg_color; + -boxpointer-gap: 4px; + .notification { + border-radius: 9px; + border-width: 0; //temporary workaround for border brokenness + background-color: transparentize(darken($osd_bg_color,8%),.05) !important; + padding-bottom: 12px; + } + #summary-right-click-menu { + padding-top: 12px; + padding-bottom: 12px; + } + } + .summary-notification-stack-scrollview { + max-height: 24em; + padding-top: 8px; + padding-bottom: 8px; + &:ltr { padding-right: 8px; } + &:rtl { padding-left: 8px; } + } + .notification-scrollview { + max-height: 18em; + -st-vfade-offset: 24px; + &:ltr > StScrollBar { padding-left: 6px; } + &:rtl > StScrollBar { padding-right: 6px; } + } + .notification-button { -st-natural-width: 140px; } + .notification-icon-button { + border-radius: 5px; + padding: 5px; + &:focus { }//FIXME + & > StIcon { icons-size: 16px; padding: 8px; } + } + .secondary-icon { icon-size: 1.09em; } //FIXME + + //chat bubbles + .chat-log-message { color: darken($fg_color,10%); } + .chat-empty-line { font-size: 4px; } + .chat-received { + padding-left: 4px; + &:rtl { padding-left: 0px; padding-right: 4px; } + } + .chat-sent { + padding-left: 18pt; + color: darken($fg_color, 15%); + &:rtl { padding-left: 0; padding-right: 18pt; } + } + .chat-meta-message { + padding-left: 4px; + font-size: 9pt; + font-weight: bold; + color: darken($fg_color,20%); + &:rtl { padding-left: 0; padding-right: 4px; } + } + .chat-notification-scrollview { max-height: 22em; } + .subscription-message { font-style: italic; } + + //hotplug + .hotplug-transient-box { + spacing: 6px; + padding: 2px 72px 2px 12px;//FIXME wat? + } + .hotplug-notification-item { + padding: 2px 10px; + &:focus { padding: 1px 71px 1px 11px; } //FIXME wat? + } + + .hotplug-notification-item-icon { + icon-size: 24px; + padding: 2px 5px; + } + + .hotplug-resident-box { spacing: 8px; } + + .hotplug-resident-mount { + spacing: 8px; + border-radius: 4px; + color: green; + &:hover { + color: red; + background-color: blue; + } + } + + .hotplug-resident-mount-label { + color: inherit; + padding-left: 6px; + } + + .hotplug-resident-mount-icon { + icon-size: 24px; + padding-left: 6px; + } + + .hotplug-resident-eject-icon { + icon-size: 16px; + } + + .hotplug-resident-eject-button { + padding: 7px; + border-radius: 5px; + color: pink; + } /* Eeeky things */ //Mess that is Looking Glass diff --git a/data/theme/_gnome-shell-old.scss b/data/theme/_gnome-shell-old.scss index 0e70e7cfa..ec9a87302 100644 --- a/data/theme/_gnome-shell-old.scss +++ b/data/theme/_gnome-shell-old.scss @@ -301,291 +301,6 @@ /* Message Tray */ -#message-tray { - background: #2e3436 url(message-tray-background.png); - background-repeat: repeat; - height: 72px; -} - -.message-tray-summary { - height: 72px; -} - -.message-tray-menu-button StIcon { - padding: 0 20px; - color: #aaaaaa; - icon-size: 24px; -} - -.message-tray-menu-button:hover StIcon, -.message-tray-menu-button:active StIcon, -.message-tray-menu-button:focus StIcon { - color: #eeeeee; -} - -.url-highlighter { - link-color: #ccccff; -} - -.no-messages-label { - color: #999999; -} - -.notification { - border-radius: 10px 10px 0px 0px; - background: rgba(0,0,0,0.9); - padding: 8px 8px 4px 8px; - spacing-rows: 4px; - spacing-columns: 10px; -} - -.notification, #notification-container { - font-size: 11pt; - width: 34em; -} - -.notification.multi-line-notification { - padding-bottom: 8px; -} - -.notification-unexpanded { - /* We want to force the actor at a specific size, irrespective - of its minimum and preferred size, so we override both */ - min-height: 36px; - height: 36px; -} - -/* We use row-span = 2 for the image cell, which prevents its height preferences to be - taken into account during allocation, so its height ends up being limited by the height - of the content in the other rows. To avoid showing a stretched image, we set the minimum - height of the table to be ICON_SIZE + IMAGE_SIZE + spacing-rows = 24 + 125 + 10 = 159 */ -.notification-with-image { - min-height: 159px; -} - -.summary-boxpointer { - -arrow-border-radius: 15px; - -arrow-background-color: rgba(0,0,0,0.9); - -arrow-base: 36px; - -arrow-rise: 18px; - color: white; - -boxpointer-gap: 4px; -} - -.summary-boxpointer .notification { - border-radius: 9px; - background: rgba(0,0,0,0) !important; - padding-bottom: 12px; -} - -.summary-boxpointer #summary-right-click-menu { - padding-top: 12px; - padding-bottom: 12px; -} - -.summary-notification-stack-scrollview { - max-height: 18em; - padding-top: 8px; - padding-bottom: 8px; -} - -.summary-notification-stack-scrollview:ltr { - padding-right: 8px; -} - -.summary-notification-stack-scrollview:rtl { - padding-left: 8px; -} - -.notification-scrollview { - max-height: 10em; - -st-vfade-offset: 24px; -} - -.notification-scrollview:ltr > StScrollBar { - padding-left: 6px; -} - -.notification-scrollview:rtl > StScrollBar { - padding-right: 6px; -} - -.notification-body { - spacing: 5px; -} - -.notification-actions { - padding-top: 18px; - spacing: 10px; -} - -.notification-button { - -st-natural-width: 140px; -} - -.notification-icon-button { - border-radius: 5px; - padding: 5px; -} - -.notification-icon-button:focus { - padding: 4px; -} - -.notification-icon-button > StIcon { - icon-size: 16px; - padding: 8px; -} - -.secondary-icon { - icon-size: 1.09em; -} - -.hotplug-transient-box { - spacing: 6px; - padding: 2px 72px 2px 12px; -} - -.hotplug-notification-item { - padding: 2px 10px; -} - -.hotplug-notification-item:focus { - padding: 1px 71px 1px 11px; -} - -.hotplug-notification-item-icon { - icon-size: 24px; - padding: 2px 5px; -} - -.hotplug-resident-box { - spacing: 8px; -} - -.hotplug-resident-mount { - spacing: 8px; - border-radius: 4px; - - color: #ccc; -} - -.hotplug-resident-mount:hover { - background-gradient-direction: horizontal; - background-gradient-start: rgba(255, 255, 255, 0.1); - background-gradient-end: rgba(255, 255, 255, 0); - - color: #fff; -} - -.hotplug-resident-mount-label { - color: inherit; - padding-left: 6px; -} - -.hotplug-resident-mount-icon { - icon-size: 24px; - padding-left: 6px; -} - -.hotplug-resident-eject-icon { - icon-size: 16px; -} - -.hotplug-resident-eject-button { - padding: 7px; - border-radius: 5px; - color: #ccc; -} - -.chat-log-message { - color: #888888; -} - -.chat-empty-line { - font-size: 4px; -} - -.chat-received { - padding-left: 4px; -} - -.chat-received:rtl { - padding-left: 0px; - padding-right: 4px; -} - -.chat-sent { - padding-left: 18pt; - color: #959595; -} - -.chat-sent:rtl { - padding-left: 0px; - padding-right: 18pt; -} - -.chat-meta-message { - padding-left: 4px; - font-size: 9pt; - font-weight: bold; - color: #bbbbbb; -} - -.chat-meta-message:rtl { - padding-left: 0px; - padding-right: 4px; -} - -.chat-notification-scrollview{ - max-height: 22em; -} - -.subscription-message { - font-style: italic; -} - -.notification StEntry { - border-radius: 4px; -} - -.summary-source-button { - padding: 6px 3px 6px 3px; -} - -.summary-source-button:last-child:ltr { - padding-right: 6px; -} - -.summary-source-button:last-child:rtl { - padding-left: 6px; -} - -.summary-source-button:hover .summary-source { - background-color: rgba(255,255,255,0.1); -} - -.summary-source-button:focus .summary-source, -.summary-source-button:selected .summary-source { - background-color: rgba(255,255,255,0.33); -} - -.summary-source { - border-radius: 4px; - padding: 0 6px 0 6px; - transition-duration: 100ms; -} - -.summary-source-counter { - background-image: url("summary-counter.svg"); - background-size: 2.4em; - font-size: 10pt; - font-weight: bold; - height: 2.4em; - width: 2.4em; - -shell-counter-overlap-x: 13px; - -shell-counter-overlap-y: 13px; -} /* OSD */ .osd-window { diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index b3fbfd9b7..ffda8374c 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -236,234 +236,6 @@ padding-right: 8pt; } /* Message Tray */ -#message-tray { - background: #2e3436 url(message-tray-background.png); - background-repeat: repeat; - height: 72px; } - -.message-tray-summary { - height: 72px; } - -.message-tray-menu-button StIcon { - padding: 0 20px; - color: #aaaaaa; - icon-size: 24px; } - -.message-tray-menu-button:hover StIcon, -.message-tray-menu-button:active StIcon, -.message-tray-menu-button:focus StIcon { - color: #eeeeee; } - -.url-highlighter { - link-color: #ccccff; } - -.no-messages-label { - color: #999999; } - -.notification { - border-radius: 10px 10px 0px 0px; - background: rgba(0, 0, 0, 0.9); - padding: 8px 8px 4px 8px; - spacing-rows: 4px; - spacing-columns: 10px; } - -.notification, #notification-container { - font-size: 11pt; - width: 34em; } - -.notification.multi-line-notification { - padding-bottom: 8px; } - -.notification-unexpanded { - /* We want to force the actor at a specific size, irrespective - of its minimum and preferred size, so we override both */ - min-height: 36px; - height: 36px; } - -/* We use row-span = 2 for the image cell, which prevents its height preferences to be - taken into account during allocation, so its height ends up being limited by the height - of the content in the other rows. To avoid showing a stretched image, we set the minimum - height of the table to be ICON_SIZE + IMAGE_SIZE + spacing-rows = 24 + 125 + 10 = 159 */ -.notification-with-image { - min-height: 159px; } - -.summary-boxpointer { - -arrow-border-radius: 15px; - -arrow-background-color: rgba(0, 0, 0, 0.9); - -arrow-base: 36px; - -arrow-rise: 18px; - color: white; - -boxpointer-gap: 4px; } - -.summary-boxpointer .notification { - border-radius: 9px; - background: transparent !important; - padding-bottom: 12px; } - -.summary-boxpointer #summary-right-click-menu { - padding-top: 12px; - padding-bottom: 12px; } - -.summary-notification-stack-scrollview { - max-height: 18em; - padding-top: 8px; - padding-bottom: 8px; } - -.summary-notification-stack-scrollview:ltr { - padding-right: 8px; } - -.summary-notification-stack-scrollview:rtl { - padding-left: 8px; } - -.notification-scrollview { - max-height: 10em; - -st-vfade-offset: 24px; } - -.notification-scrollview:ltr > StScrollBar { - padding-left: 6px; } - -.notification-scrollview:rtl > StScrollBar { - padding-right: 6px; } - -.notification-body { - spacing: 5px; } - -.notification-actions { - padding-top: 18px; - spacing: 10px; } - -.notification-button { - -st-natural-width: 140px; } - -.notification-icon-button { - border-radius: 5px; - padding: 5px; } - -.notification-icon-button:focus { - padding: 4px; } - -.notification-icon-button > StIcon { - icon-size: 16px; - padding: 8px; } - -.secondary-icon { - icon-size: 1.09em; } - -.hotplug-transient-box { - spacing: 6px; - padding: 2px 72px 2px 12px; } - -.hotplug-notification-item { - padding: 2px 10px; } - -.hotplug-notification-item:focus { - padding: 1px 71px 1px 11px; } - -.hotplug-notification-item-icon { - icon-size: 24px; - padding: 2px 5px; } - -.hotplug-resident-box { - spacing: 8px; } - -.hotplug-resident-mount { - spacing: 8px; - border-radius: 4px; - color: #ccc; } - -.hotplug-resident-mount:hover { - background-gradient-direction: horizontal; - background-gradient-start: rgba(255, 255, 255, 0.1); - background-gradient-end: rgba(255, 255, 255, 0); - color: #fff; } - -.hotplug-resident-mount-label { - color: inherit; - padding-left: 6px; } - -.hotplug-resident-mount-icon { - icon-size: 24px; - padding-left: 6px; } - -.hotplug-resident-eject-icon { - icon-size: 16px; } - -.hotplug-resident-eject-button { - padding: 7px; - border-radius: 5px; - color: #ccc; } - -.chat-log-message { - color: #888888; } - -.chat-empty-line { - font-size: 4px; } - -.chat-received { - padding-left: 4px; } - -.chat-received:rtl { - padding-left: 0px; - padding-right: 4px; } - -.chat-sent { - padding-left: 18pt; - color: #959595; } - -.chat-sent:rtl { - padding-left: 0px; - padding-right: 18pt; } - -.chat-meta-message { - padding-left: 4px; - font-size: 9pt; - font-weight: bold; - color: #bbbbbb; } - -.chat-meta-message:rtl { - padding-left: 0px; - padding-right: 4px; } - -.chat-notification-scrollview { - max-height: 22em; } - -.subscription-message { - font-style: italic; } - -.notification StEntry { - border-radius: 4px; } - -.summary-source-button { - padding: 6px 3px 6px 3px; } - -.summary-source-button:last-child:ltr { - padding-right: 6px; } - -.summary-source-button:last-child:rtl { - padding-left: 6px; } - -.summary-source-button:hover .summary-source { - background-color: rgba(255, 255, 255, 0.1); } - -.summary-source-button:focus .summary-source, -.summary-source-button:selected .summary-source { - background-color: rgba(255, 255, 255, 0.33); } - -.summary-source { - border-radius: 4px; - padding: 0 6px 0 6px; - transition-duration: 100ms; } - -.summary-source-counter { - background-image: url("summary-counter.svg"); - background-size: 2.4em; - font-size: 10pt; - font-weight: bold; - height: 2.4em; - width: 2.4em; - -shell-counter-overlap-x: 13px; - -shell-counter-overlap-y: 13px; } - /* OSD */ .osd-window { text-align: center; @@ -1774,6 +1546,194 @@ StScrollBar { color: #eeeeec; } /* NOTIFICATIONS & MESSAGE TRAY */ +#message-tray { + background: #212424 url("noise-texture.png"); + background-repeat: repeat; + height: 72px; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5); } + #message-tray .message-tray-summary { + height: 72px; } + #message-tray .message-tray-menu-button StIcon { + padding: 0 20px; + color: #eeeeec; + icon-size: 24px; + opacity: 1; } + #message-tray .message-tray-menu-button:hover StIcon { + color: white; } + #message-tray .message-tray-menu-button:active StIcon { + color: #2a76c6; } + #message-tray .no-messages-label { + color: #d6d6d1; } + +.url-highlighter { + link-color: #215d9c; } + +.notification { + font-size: 11pt; + width: 34em; + border-radius: 6px 6px 0 0; + background-color: rgba(27, 31, 32, 0.95); + border: 1px solid rgba(0, 0, 0, 0.7); + border-bottom-width: 0; + spacing-rows: 4px; + padding: 8px 8px 4px 8px; + spacing-columns: 10px; } + .notification.multi-line-notification { + padding-bottom: 8px; } + +.notification-unexpanded { + min-height: 36px; + height: 36px; } + +.notification-with-image { + min-height: 159px; } + +.notification-body { + spacing: 5px; } + +.notification-actions { + paddinf-top: 18px; + spacing: 6px; } + +.summary-source { + border-radius: 4px; + padding: 6px; + transition-duration: 100ms; } + +.summary-source-button:hover .summary-source, .summary-source-button:selected .summary-source, .summary-source-button:focus .summary-source { + background-color: #3e4444; } + +.summary-source-counter { + font-size: 10pt; + font-weight: bold; + height: 2.4em; + width: 2.4em; + -shell-counter-overlap-x: 13px; + -shell-counter-overlap-y: 13px; + background-color: #215d9c; + border: 2px solid #eeeeec; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.5); } + +.summary-boxpointer { + -arrow-border-radius: 15px; + -arrow-background-color: rgba(27, 31, 32, 0.95); + -arrow-base: 36px; + -arrow-rise: 18px; + color: #eeeeec; + -boxpointer-gap: 4px; } + .summary-boxpointer .notification { + border-radius: 9px; + border-width: 0; + background-color: rgba(27, 31, 32, 0.95) !important; + padding-bottom: 12px; } + .summary-boxpointer #summary-right-click-menu { + padding-top: 12px; + padding-bottom: 12px; } + +.summary-notification-stack-scrollview { + max-height: 24em; + padding-top: 8px; + padding-bottom: 8px; } + .summary-notification-stack-scrollview:ltr { + padding-right: 8px; } + .summary-notification-stack-scrollview:rtl { + padding-left: 8px; } + +.notification-scrollview { + max-height: 18em; + -st-vfade-offset: 24px; } + .notification-scrollview:ltr > StScrollBar { + padding-left: 6px; } + .notification-scrollview:rtl > StScrollBar { + padding-right: 6px; } + +.notification-button { + -st-natural-width: 140px; } + +.notification-icon-button { + border-radius: 5px; + padding: 5px; } + .notification-icon-button > StIcon { + icons-size: 16px; + padding: 8px; } + +.secondary-icon { + icon-size: 1.09em; } + +.chat-log-message { + color: #d6d6d1; } + +.chat-empty-line { + font-size: 4px; } + +.chat-received { + padding-left: 4px; } + .chat-received:rtl { + padding-left: 0px; + padding-right: 4px; } + +.chat-sent { + padding-left: 18pt; + color: #cacac4; } + .chat-sent:rtl { + padding-left: 0; + padding-right: 18pt; } + +.chat-meta-message { + padding-left: 4px; + font-size: 9pt; + font-weight: bold; + color: #bebeb6; } + .chat-meta-message:rtl { + padding-left: 0; + padding-right: 4px; } + +.chat-notification-scrollview { + max-height: 22em; } + +.subscription-message { + font-style: italic; } + +.hotplug-transient-box { + spacing: 6px; + padding: 2px 72px 2px 12px; } + +.hotplug-notification-item { + padding: 2px 10px; } + .hotplug-notification-item:focus { + padding: 1px 71px 1px 11px; } + +.hotplug-notification-item-icon { + icon-size: 24px; + padding: 2px 5px; } + +.hotplug-resident-box { + spacing: 8px; } + +.hotplug-resident-mount { + spacing: 8px; + border-radius: 4px; + color: green; } + .hotplug-resident-mount:hover { + color: red; + background-color: blue; } + +.hotplug-resident-mount-label { + color: inherit; + padding-left: 6px; } + +.hotplug-resident-mount-icon { + icon-size: 24px; + padding-left: 6px; } + +.hotplug-resident-eject-icon { + icon-size: 16px; } + +.hotplug-resident-eject-button { + padding: 7px; + border-radius: 5px; + color: pink; } + /* Eeeky things */ #LookingGlassDialog { background-color: rgba(0, 0, 0, 0.8); diff --git a/data/theme/message-tray-background.png b/data/theme/message-tray-background.png deleted file mode 100644 index 357dae0d0ce3a0219487774a1e1977b2d7e584be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25454 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 Zcu}s@_cfgocqO6)swUl}2{{U~jX666@