revert palette, add WIP skin

This commit is contained in:
Martin Rotter 2025-05-22 11:06:32 +02:00
parent 795043c176
commit 9f70325177
19 changed files with 1365 additions and 87 deletions

View file

@ -0,0 +1,4 @@
<div>
<h4><span>Error: </span>%1</h4>
<div role="alert">%2</div>
</div>

View file

@ -0,0 +1 @@
&#32;&#47;&nbsp;<a class="menc" href="%1"><span style="text-transform: uppercase;">%2</span></a>

View file

@ -0,0 +1,5 @@
<a href="%1">
<img alt="%2"
src="%1"
style="max-height: %3px;">
</a>

View file

@ -0,0 +1,16 @@
<div class="rssguard-mwrapper" dir="%9" id="%8">
<section class="rssguard-mhead">
<div style="float: right; margin: 10px;"><!-- Should it remain here??? -->%7</div>
<span class="msmall">%2</span>
<h1>%1<span class="mlinks">%6<span class="mwrapurl"><span>&nbsp;&#47;&nbsp;</span><a href="%3">URL</a></span></h1>
<span class="msmall">%5</span>
</section>
<hr>
<div class="rssguard-mbody">
%4
</div>
</div>

View file

@ -0,0 +1,393 @@
@charset "UTF-8";
* {
font-family: inherit;
font-size: inherit; }
body, h1, h2, h3, h4, h5, h6,
p, blockquote, pre, hr,
dl, dd, ol, ul, figure {
margin: 0;
padding: 0; }
body {
background-color: #2F3134;
box-sizing: border-box;
color: #f5f5f5;
-webkit-text-size-adjust: 100%;
-webkit-font-feature-settings: "kern" 1;
font-feature-settings: "kern" 1;
font-kerning: normal;
padding: 10px !important;
min-height: 100vh; }
::selection {
background-color: #647595;
text-shadow: none; }
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
ul, ol, dl, figure,
details {
margin-bottom: 10px; }
hr {
background-color: #545556;
border: none;
display: block;
height: 2px;
margin: 10px 0; }
h1, h2, h3, h4, h5, h6 {
font-weight: 600 !important; }
h1 {
font-size: 1.25rem !important; }
h2 {
font-size: 1.20rem !important; }
h3 {
font-size: 1.15rem !important; }
h4 {
font-size: 1.1rem !important; }
h5 {
font-size: 1rem !important; }
h6 {
font-size: .95rem !important; }
b {
font-weight: bold !important; }
i {
font-style: italic !important; }
strong {
font-weight: 800 !important; }
em {
font-style: oblique !important; }
mark {
background-color: #f8d08c66; }
sub,
sup {
font-size: .8rem !important; }
small {
font-size: .9rem !important; }
abbr {
cursor: help;
font-style: italic !important;
font-weight: 100 !important; }
q {
font-style: italic !important; }
q::before {
content: '“'; }
q::after {
content: '”'; }
time {
font-weight: 450 !important; }
var {
font-style: oblique !important;
font-weight: 500 !important; }
a {
color: #647595; }
a:hover {
text-decoration: none; }
a:focus {
box-shadow: none;
outline: none; }
cite {
font-style: italic !important;
font-weight: bold !important; }
figure {
max-width: 100%; }
figure > img {
display: block; }
figcaption {
font-size: .8rem !important; }
blockquote {
border-left: 0.3em solid #545556;
margin-left: 0;
padding: 0 10px; }
blockquote,
blockquote p {
color: #E2E2E2; }
pre,
code {
border: 1px solid #222325;
border-radius: 0.3em;
color: #E2E2E2;
font-family: monospace;
font-size: .95rem !important; }
code {
background-color: rgba(33, 35, 39, 0.4);
padding: 0 .25em;
word-break: break-word; }
pre {
background-color: rgba(33, 35, 39, 0.4);
overflow-x: auto;
padding: 7px 13px;
tab-size: 2;
white-space: pre !important;
width: unset !important; }
pre > code {
background-color: unset;
border: none;
color: unset;
padding-right: 0;
padding-left: 0;
tab-size: 2; }
kbd {
background: rgba(33, 35, 39, 0.4);
border: 1px solid #222325;
border-bottom: 3px solid #1b1c1d;
border-radius: 0.3em;
box-shadow: 0 2px 4px #202224, inset 0 1px #2F3134;
font-size: .9rem !important;
padding: .1em .4em .2em .4em; }
select {
background-color: rgba(33, 35, 39, 0.4);
border: 1px solid #222325;
border-radius: 0.3em;
color: #f5f5f5;
padding: .04em .25em;
width: 100%; }
select:focus {
box-shadow: none;
outline: none;
background-color: #2F3134; }
select > option {
background-color: #2F3134; }
table {
border-collapse: collapse;
width: 100% !important; }
li {
display: list-item; }
ul,
ol {
padding-left: 1.5em; }
ul {
list-style-type: disc; }
ul li ul {
list-style-type: square; }
ol {
list-style-type: decimal; }
ol li ol {
list-style-type: lower-roman; }
details {
border: 1px solid rgba(33, 35, 39, 0.4);
border-radius: 0.3em;
padding: .5em .5em 0; }
details > summary {
background-color: rgba(33, 35, 39, 0.4);
border-radius: 0.27em;
cursor: pointer;
margin: -.5em -.5em 0;
padding-left: .5em; }
details > summary:focus {
box-shadow: none;
outline: none; }
details *:last-child {
margin-bottom: 0; }
details[open] {
border-color: #222325;
padding: .5em; }
details[open] > summary {
border-bottom: 1px solid #222325;
border-radius: 0.27em 0.27em 0 0;
margin-bottom: .5em; }
iframe {
max-width: 100%;
height: auto;
width: auto; }
a:focus,
select:focus,
summary:focus {
background-color: #222325;
text-shadow: 0 -1px #2F3134; }
:target {
outline: 1px solid #647595; }
.rssguard-mwrapper {
padding: 0px !important; }
.rssguard-mwrapper .rssguard-mhead .msmall,
.rssguard-mwrapper .rssguard-mhead .mlinks {
opacity: .8; }
.rssguard-mwrapper .rssguard-mhead > h1 {
margin: 0; }
.rssguard-mwrapper .rssguard-mhead .msmall {
font-size: .9em; }
.rssguard-mwrapper .rssguard-mhead .mlinks .menc {
word-break: break-word; }
.rssguard-mwrapper .rssguard-mhead .mlinks .mwrapurl {
display: inline-flex; }
.rssguard-mwrapper .rssguard-mhead .mlinks .mwrapurl a[href=""], .rssguard-mwrapper .rssguard-mhead .mlinks .mwrapurl a[href=""] + span {
display: none; }
@media only screen and (max-width: 800px) {
.rssguard-mwrapper img, .rssguard-mwrapper video {
max-width: 100% !important; } }
.rssguard-mbody {
word-break: break-word; }
table {
word-break: normal; }
html::before,
html::after,
body::before,
body::after {
content: "";
background-color: #222325;
display: block;
position: fixed;
z-index: 5; }
html::before {
height: 1px;
left: 0;
right: 0;
top: 0; }
html::after {
width: 1px;
top: 0;
right: 0;
bottom: 0; }
body::before {
height: 1px;
right: 0;
bottom: 0;
left: 0; }
body::after {
width: 1px;
top: 0;
bottom: 0;
left: 0; }
::-webkit-scrollbar {
height: 13px;
width: 14px; }
::-webkit-scrollbar-track,
::-webkit-scrollbar-corner {
background-color: #313235;
box-shadow: inset 1px 1px #2c2d30; }
::-webkit-scrollbar-corner {
border-radius: 0 0 0.3em 0; }
::-webkit-scrollbar-thumb {
box-shadow: inset 1px 1px #515258, inset -1px -1px #515258, inset 0px 1px #515258, inset 0px -1px #515258, inset 1px 0px #515258, inset 1px -1px #515258, inset -1px 0px #515258, inset -1px 1px #515258; }
::-webkit-scrollbar-thumb:horizontal {
background-image: linear-gradient(#3b3c40 5%, #36373b);
min-width: 25px; }
::-webkit-scrollbar-thumb:horizontal:hover {
background-image: linear-gradient(#3d3e43 25%, #36373b); }
::-webkit-scrollbar-thumb:vertical {
background-image: linear-gradient(to right, #3b3c40 5%, #36373b);
min-height: 25px; }
::-webkit-scrollbar-thumb:vertical:hover {
background-image: linear-gradient(to right, #3d3e43 25%, #36373b); }
::-webkit-scrollbar-thumb:active {
background-image: linear-gradient(#36373b, #36373b) !important; }
:not(body)::-webkit-scrollbar-thumb:horizontal {
box-shadow: inset 1px 1px #515258, inset -1px -1px #515258, inset 0px 1px #515258, inset 0px -1px #515258, inset 1px 0px #515258, inset 1px -1px #515258, inset -1px 0px #515258, inset -1px 1px #515258, 1px 0px #222325, 1px 1px #222325, -1px 1px #222325, -1px 0px #222325; }
:not(body)::-webkit-scrollbar-thumb:vertical {
box-shadow: inset 1px 1px #515258, inset -1px -1px #515258, inset 0px 1px #515258, inset 0px -1px #515258, inset 1px 0px #515258, inset 1px -1px #515258, inset -1px 0px #515258, inset -1px 1px #515258, 0px -1px #222325, 1px -1px #222325, 1px 1px #222325, 0px 1px #222325; }
::-webkit-scrollbar-thumb:horizontal,
::-webkit-scrollbar-track:horizontal {
border-top: 1px solid #222325; }
::-webkit-scrollbar-thumb:vertical,
::-webkit-scrollbar-track:vertical {
border-left: 1px solid #222325; }
body::-webkit-scrollbar-thumb:horizontal, body::-webkit-scrollbar-thumb:vertical,
body::-webkit-scrollbar-track:horizontal,
body::-webkit-scrollbar-track:vertical {
border: 1px solid #222325; }
body::-webkit-scrollbar-thumb:horizontal,
body::-webkit-scrollbar-track:horizontal {
border-top: none; }
body::-webkit-scrollbar-thumb:vertical,
body::-webkit-scrollbar-track:vertical {
border-left: none; }
body::-webkit-scrollbar-corner {
border: 1px solid #222325;
border-top: none;
border-left: none; }
::-webkit-scrollbar-track:corner-present:horizontal,
::-webkit-scrollbar-thumb:corner-present:horizontal {
border-radius: 0 0 0 0.3em; }
::-webkit-scrollbar-track:corner-present:vertical,
::-webkit-scrollbar-thumb:corner-present:vertical {
border-radius: 0 0.3em 0 0; }
::-webkit-scrollbar-track:horizontal,
::-webkit-scrollbar-thumb:horizontal {
border-radius: 0 0 0.3em 0.3em; }
::-webkit-scrollbar-track:vertical,
::-webkit-scrollbar-thumb:vertical {
border-radius: 0 0.3em 0.3em 0; }
/* Please enable JS for additional colouring features */
:root {
--rssguard-red: 0;
--rssguard-green: 0;
--rssguard-blue: 0;
--rssguard-threshold: 0.5; }
:root {
--rssguard-r: calc(var(--rssguard-red) * 0.2126);
--rssguard-g: calc(var(--rssguard-green) * 0.7152);
--rssguard-b: calc(var(--rssguard-blue) * 0.0722);
--rssguard-sum:
calc(
var(--rssguard-r) +
var(--rssguard-g) +
var(--rssguard-b)
);
--rssguard-perceived-lightness: calc(var(--rssguard-sum) / 255); }
body,
::selection,
mark, code, pre, pre > code,
blockquote, blockquote p {
color: hsla(0, 0%, calc( ( var(--rssguard-perceived-lightness) - var(--rssguard-threshold) ) * -10000000% ), 0.9); }
/*# sourceMappingURL=html_style.css.map */

View file

@ -0,0 +1,309 @@
@charset "utf-8";
$qtbg-base: #2F3134 !default; // clr_basbg
$qtbg-button: #2C2D30 !default; // clr_altbg // button bg (scrollbar, alt bg)
$qcselbg: #647595 !default; // clr_selbg
// {{{ Emulate Fusion colour processing (dark only)
// Scrollbar colours
//$qcbgbg: lighten($qtbg-button, 6%); // See toolbar bg
$bgscroll: lighten($qtbg-button, 2%) !default; // track and corner bg
$tr-border: darken($qtbg-button, 4%) !default; // track brdr
// {{{ Scrollbar thumb
// Thumb bg gradient
// Normal
$thscrlin: lighten($qtbg-button, 6%) !default;
$thscrlout: lighten($qtbg-button, 4%) !default;
// Hover
$thscrlhvin: lighten($qtbg-button, 7%) !default;
$thscrlhvout: $thscrlout;
// Light outline
$th-border: lighten($qtbg-button, 15%) !default;
// }}}
// }}}
// {{{ HTML palette (Colours)
$cbg00: $qtbg-base;
// {{{ Irrelevant, because colour switcher (see below) overrides all fg colours (either with JS on or off)
$cfg00: #f5f5f5 !default;
$cfg10: #E2E2E2 !default;
$cfg11: $cfg10;
// }}}
$cbor2: #545556 !default;
$ccodeblock: rgba(33, 35, 39, 0.4) !default;
$ccode: $ccodeblock;
$cbor3: $tr-border;
$cmark: #f8d08c66 !default; // 40% transparency
$clink: $qcselbg;
// }}}
// Other
$radius-unit: .3em !default;
@import
"../nudus-base/html_style_base"
;
//
// Dark CSS style has following additions:
//
// {{{ Border around viewport
// https://csswizardry.com/2010/12/simplified-page-borders-in-pure-css/
html::before,
html::after,
body::before,
body::after {
content: "";
background-color: $tr-border;
display: block;
position: fixed;
z-index: 5;
}
html::before {
height: 1px;
left: 0;
right: 0;
top: 0;
}
html::after {
width: 1px;
top: 0;
right: 0;
bottom: 0;
}
body::before {
height: 1px;
right: 0;
bottom: 0;
left: 0;
}
body::after {
width: 1px;
top: 0;
bottom: 0;
left: 0;
}
// }}}
// {{{ Dark-coloured scrollbar
::-webkit-scrollbar {
height: 13px;
width: 14px;
}
::-webkit-scrollbar-track,
::-webkit-scrollbar-corner {
background-color: $bgscroll;
box-shadow: inset 1px 1px lighten($tr-border, 4%);
}
// Part where vertical and horizontal scrollbars meet
::-webkit-scrollbar-corner {
border-radius: 0 0 $radius-unit 0;
}
// TODO: Can be simplified to @include and function
$th-outline:
inset 1px 1px $th-border,
inset -1px -1px $th-border,
inset 0px 1px $th-border,
inset 0px -1px $th-border,
inset 1px 0px $th-border,
inset 1px -1px $th-border,
inset -1px 0px $th-border,
inset -1px 1px $th-border
;
::-webkit-scrollbar-thumb {
$th-min-unit: 25px;
box-shadow: $th-outline;
&:horizontal {
background-image: linear-gradient($thscrlin 5%, $thscrlout);
min-width: $th-min-unit;
&:hover {
background-image: linear-gradient($thscrlhvin 25%, $thscrlhvout);
}
}
&:vertical {
background-image: linear-gradient(to right, $thscrlin 5%, $thscrlout);
min-height: $th-min-unit;
&:hover {
background-image: linear-gradient(to right, $thscrlhvin 25%, $thscrlhvout);
}
}
&:active {
background-image: linear-gradient($thscrlout, $thscrlout) !important;
}
}
// Light and dark borders to outline the thumb
// Clockwise (x y)
:not(body)::-webkit-scrollbar-thumb {
&:horizontal {
box-shadow:
$th-outline,
1px 0px $tr-border,
1px 1px $tr-border,
-1px 1px $tr-border,
-1px 0px $tr-border
;
}
&:vertical {
box-shadow:
$th-outline,
0px -1px $tr-border,
1px -1px $tr-border,
1px 1px $tr-border,
0px 1px $tr-border
;
}
}
::-webkit-scrollbar-thumb,
::-webkit-scrollbar-track {
&:horizontal {
border-top: 1px solid $tr-border;
}
&:vertical {
border-left: 1px solid $tr-border;
}
}
// Complete the borders for body scrollbar
body::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-track {
&:horizontal,
&:vertical {
border: 1px solid $tr-border;
}
&:horizontal {
border-top: none;
}
&:vertical {
border-left: none;
}
}
body::-webkit-scrollbar-corner {
border: 1px solid $tr-border;
border-top: none;
border-left: none;
}
::-webkit-scrollbar-track,
::-webkit-scrollbar-thumb {
&:corner-present {
&:horizontal {
border-radius: 0 0 0 $radius-unit;
}
&:vertical {
border-radius: 0 $radius-unit 0 0;
}
}
&:horizontal {
border-radius: 0 0 $radius-unit $radius-unit;
}
&:vertical {
border-radius: 0 $radius-unit $radius-unit 0;
}
}
// }}}
// {{{ Fg colour switcher
// Thank you so much!!
// https://css-tricks.com/switch-font-color-for-different-backgrounds-with-css/
/* Please enable JS for additional colouring features */
:root {
// Default RGB values for background colour
--rssguard-red: 0;
--rssguard-green: 0;
--rssguard-blue: 0;
// The threshold at which colours are considered "light
// Range: decimals from 0 to 1, recommended 0.5 - 0.6
--rssguard-threshold: 0.5;
}
:root {
// Calculates perceived lightness using the sRGB Luma method
// Luma = (red * 0.2126 + green * 0.7152 + blue * 0.0722) / 255
--rssguard-r: calc(var(--rssguard-red) * 0.2126);
--rssguard-g: calc(var(--rssguard-green) * 0.7152);
--rssguard-b: calc(var(--rssguard-blue) * 0.0722);
--rssguard-sum:
calc(
var(--rssguard-r) +
var(--rssguard-g) +
var(--rssguard-b)
);
--rssguard-perceived-lightness: calc(var(--rssguard-sum) / 255);
}
// Shows either white or black colour depending on perceived lightness
body,
::selection,
mark, code, pre, pre > code,
blockquote, blockquote p { // TODO: why did not I add 'blockquote p' here before?
color:
hsla(
0,
0%,
calc(
(
var(--rssguard-perceived-lightness) -
var(--rssguard-threshold)
) *
-10000000%
),
.9
);
}
// }}}
// vim:foldmethod=marker

View file

@ -0,0 +1,423 @@
// ___________________________
// < I'm an expert in my field. >
// ---------------------------
// \ ^__^
// \ (oo)\_______
// (__)\ )\/\
// ||----w |
// || ||
//
// Variables
//
$base-unit: 10px !default;
//
// Styling
//
// Let the font be customised via RSS Guard settings
* {
font-family: inherit;
font-size: inherit;
}
//
// Reset some basic elements
//
body, h1, h2, h3, h4, h5, h6,
p, blockquote, pre, hr,
dl, dd, ol, ul, figure {
margin: 0;
padding: 0;
}
//
// Add some basic styling
//
body {
background-color: $cbg00;
box-sizing: border-box;
color: $cfg00;
//cursor: default;
-webkit-text-size-adjust: 100%;
-webkit-font-feature-settings: "kern" 1;
font-feature-settings: "kern" 1;
font-kerning: normal;
padding: 10px !important;
min-height: 100vh;
}
::selection {
background-color: $clink;
text-shadow: none;
}
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
ul, ol, dl, figure,
details {
margin-bottom: $base-unit;
}
hr {
background-color: $cbor2;
border: none;
display: block;
height: 2px;
margin: $base-unit 0;
}
h1, h2, h3, h4, h5, h6 {
font-weight: 600 !important;
}
h1 { font-size: 1.25rem !important; }
h2 { font-size: 1.20rem !important; }
h3 { font-size: 1.15rem !important; }
h4 { font-size: 1.1rem !important; }
h5 { font-size: 1rem !important; }
h6 { font-size: .95rem !important; }
b {
font-weight: bold !important;
}
i {
font-style: italic !important;
}
strong {
font-weight: 800 !important;
}
em {
font-style: oblique !important;
}
mark {
background-color: $cmark;
}
sub,
sup {
font-size: .8rem !important;
}
small {
font-size: .9rem !important;
}
abbr {
cursor: help;
font-style: italic !important;
font-weight: 100 !important;
}
q {
font-style: italic !important;
&::before {
content: '';
}
&::after {
content: '';
}
}
time {
font-weight: 450 !important;
}
var {
font-style: oblique !important;
font-weight: 500 !important;
}
a {
color: $clink;
&:hover {
text-decoration: none;
}
&:focus {
box-shadow: none;
outline: none;
}
}
cite {
font-style: italic !important;
font-weight: bold !important;
}
// override if width is defined in element's style attribute
figure {
max-width: 100%;
}
figure > img {
display: block;
}
figcaption {
font-size: .8rem !important;
}
blockquote {
border-left: .3em solid $cbor2;
margin-left: 0;
padding: 0 $base-unit;
&,
p {
color: $cfg11;
}
}
pre,
code {
border: 1px solid $cbor3;
border-radius: $radius-unit;
color: $cfg10;
//cursor: text;
// Font for code blocks falls back to system default monospace
font-family: monospace;
font-size: .95rem !important;
}
code {
background-color: $ccode;
padding: 0 .25em;
word-break: break-word;
}
pre {
background-color: $ccodeblock;
overflow-x: auto;
padding: 7px 13px;
tab-size: 2;
// For <pre style='white-space:pre-wrap;'>
white-space: pre !important;
// For <pre style='white-space:pre-wrap;width:81ex'>
width: unset !important;
> code {
background-color: unset;
border: none;
color: unset;
padding-right: 0;
padding-left: 0;
tab-size: 2;
}
}
kbd {
background: $ccode;
border: 1px solid $cbor3;
border-bottom: 3px solid darken($cbor3, 3%);
border-radius: $radius-unit;
box-shadow:
0 2px 4px darken($cbg00, 6%),
inset 0 1px $cbg00
;
font-size: .9rem !important;
padding: .1em .4em .2em .4em;
}
select {
background-color: $ccodeblock;
border: 1px solid $cbor3;
border-radius: $radius-unit;
color: $cfg00;
padding: .04em .25em;
// Do not use max-width here
width: 100%;
&:focus {
box-shadow: none;
outline: none;
background-color: $cbg00;
}
> option {
background-color: $cbg00;
}
}
table {
border-collapse: collapse;
// `!important` is set to override something like <table width="900px">
width: 100% !important;
}
// Return this if something goes wrong, and return the JS override for dark theme
//table,
//th,
//td {
// color: $cfg00;
//}
li {
display: list-item;
}
ul,
ol {
padding-left: 1.5em;
}
ul {
list-style-type: disc;
li ul {
list-style-type: square;
}
}
ol {
list-style-type: decimal;
li ol {
list-style-type: lower-roman;
}
}
img {
// Let the width be defined (see .rssguard-mbody img), but keep aspect ratio
//height: auto;
// `width auto` creates many problems even if set as a fallback
//width: auto;
}
details {
border: 1px solid $ccodeblock;
border-radius: $radius-unit;
padding: .5em .5em 0;
> summary {
background-color: $ccodeblock;
border-radius: $radius-unit * 0.9;
cursor: pointer;
margin: -.5em -.5em 0;
padding-left: .5em;
&:focus {
box-shadow: none;
outline: none;
}
}
& *:last-child {
margin-bottom: 0;
}
}
details[open] {
border-color: $cbor3;
padding: .5em;
> summary {
border-bottom: 1px solid $cbor3;
border-radius: ($radius-unit * 0.9) ($radius-unit * 0.9) 0 0;
margin-bottom: .5em;
}
}
iframe {
max-width: 100%;
height: auto;
width: auto;
}
a,
select,
summary {
&:focus {
background-color: $cbor3;
text-shadow: 0 -1px $cbg00;
}
}
:target {
outline: 1px solid $clink;
}
// m* == message*
.rssguard-mwrapper {
padding: 0px !important;
.rssguard-mhead {
.msmall,
.mlinks {
opacity: .8;
}
> h1 {
margin: 0;
}
.msmall {
font-size: .9em;
}
.mlinks {
.menc {
word-break: break-word;
}
.mwrapurl {
display: inline-flex;
a[href=""] {
&,
& + span {
display: none;
}
}
}
}
}
img, video {
// Needs to be `!important` when max-width is defined by image style
// <img src="https://....png" alt="alt" style="max-width: 100%;">
//max-width: 450px !important;
// For cases when they both are set
//max-height: unset !important;
@media only screen and (max-width: 800px) {
// `!important` to override `!important` that is set above
max-width: 100% !important;
}
}
}
//
// Other
//
// For articles without any html elements;
// If not applied to _all_, *must* be applied to links in mbody
// mbody == article body
.rssguard-mbody {
word-break: break-word;
}
// Fix at least some mess produced by above
table {
word-break: normal;
}

View file

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>%1</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
%style%
</style>
</head>
<body>
%2
<script>
const rssGuardroot = document.documentElement;
rssGuardBody = document.body;
let rssGuardColor = window.getComputedStyle(rssGuardBody).backgroundColor;
rssGuardMatch = rssGuardColor.match(/(\w+)\((\d+), (\d+), (\d+)\)/);
if (rssGuardMatch != null) {
rssGuardroot.style.setProperty('--rssguard-red', rssGuardMatch[2]);
rssGuardroot.style.setProperty('--rssguard-green', rssGuardMatch[3]);
rssGuardroot.style.setProperty('--rssguard-blue', rssGuardMatch[4]);
}
</script>
</body>
</html>

View file

@ -0,0 +1 @@
&nbsp;&#47;&nbsp;<a href="%1"><span style="text-transform: uppercase;">%2</span></a>

View file

@ -0,0 +1,4 @@
<a href="%1">
<img alt="%2" src="%1" height="%3">
</a>
<br/>

View file

@ -0,0 +1,15 @@
<div dir="%9" id="%8">
<div>
<div>%7</div>
<span>%2</span>
<h2>%1<span>%6</span>&nbsp;&#47;&nbsp;<a href="%3">URL</a></h2>
<span>%5</span>
</div>
<hr>
<div>
%4
</div>
</div>

View file

@ -0,0 +1,25 @@
body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
hr,
dl,
dd,
ol,
ul,
figure {
margin: 0;
padding: 0; }
body {
background-color: #2F3134;
color: #f5f5f5; }
a {
color: #647595; }

View file

@ -0,0 +1,7 @@
@charset "utf-8";
$col_back: #2F3134 !default;
$col_front: #f5f5f5 !default;
$col_link: #647595 !default;
@import "../nudus-base/lite_html_style_base";

View file

@ -0,0 +1,28 @@
body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
hr,
dl,
dd,
ol,
ul,
figure {
margin: 0;
padding: 0;
}
body {
background-color: $col_back;
color: $col_front;
}
a {
color: $col_link;
}

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<skin version="6.6.6">
<author>
<name>martinrotter</name>
</author>
<description>Dark variation of solarized theme.</description>
<palette>
<color key="FgInteresting">#acc2c5</color>
<color key="FgSelectedInteresting">#acc2c5</color>
<color key="FgNewMessages">#B58900</color>
<color key="FgSelectedNewMessages">#B58900</color>
<color key="FgError">#DC322F</color>
<color key="FgSelectedError">#DC322F</color>
<color key="FgDisabledFeed">#586e75</color>
<color key="Allright">#859900</color>
</palette>
<forced-styles>Fusion</forced-styles>
<forced-skin-colors>true</forced-skin-colors>
<style-palette>
<group id="All">
<color role="Base">#002b36</color>
<color role="AlternateBase">#073642</color>
<color role="ToolTipBase" brush="Dense1Pattern">#586e75</color>
<color role="Dark">#001f27</color>
<color role="Midlight">#586e75</color>
<color role="Mid">#657b83</color>
<color role="Shadow">#073642</color>
<color role="Light">#839496</color>
<color role="Highlight">#d33682</color>
<color role="Window">#073642</color>
<color role="Button">#073642</color>
<color role="Text">#96aaac</color>
<color role="BrightText">#ffffff</color>
<color role="HighlightedText">#ffffff</color>
<color role="PlaceholderText">#586e75</color>
<color role="ToolTipText">#96aaac</color>
<color role="ButtonText">#ffffff</color>
<color role="WindowText">#96aaac</color>
<color role="Link">#268bd2</color>
<color role="LinkVisited">#6c71c4</color>
<color role="NoRole">#073642</color>
</group>
<group id="Disabled">
<color role="Base">#002b36</color>
<color role="Dark">#001f27</color>
<color role="Shadow">#073642</color>
<color role="Text">#586e75</color>
<color role="ButtonText">#586e75</color>
<color role="WindowText">#586e75</color>
<color role="Highlight">#d33682</color>
</group>
</style-palette>
</skin>

View file

@ -0,0 +1,4 @@
QProgressBar {
background-color: palette(highlight);
color: palette(window);
}

View file

@ -0,0 +1,24 @@
QListWidget,
QScrollArea {
border: 1px solid palette(light);
}
QPlainTextEdit:focus {
border: 1px solid palette(highlight);
}
QToolTip {
background-color: palette(window);
color: palette(text);
border: 1px solid palette(highlight);
border-radius: 2px;
}
QSplitter::handle {
background: palette(light);
}
QStatusBar::item {
border: none;
}

View file

@ -94,7 +94,7 @@ QIcon MessagesModel::generateUnreadIcon() {
QPointF center(64, 64);
qreal radius = 32;
QColor custom_clr = qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgNewMessages).value<QColor>();
QColor custom_clr = qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgInteresting).value<QColor>();
if (!custom_clr.isValid()) {
custom_clr = QColor(RAD_COLOR);

View file

@ -63,34 +63,18 @@ bool SkinFactory::isStyleGoodForAlternativeStylePalette(const QString& style_nam
// This is here because in Qt 6.5.0, they hardcoded
// DARK palette if user has enabled "dark mode" in OS.
QPalette qt_fusionPalette(bool dark_appearance) {
// Define Solarized dark and light colors
const QColor solarized_base03 = QColor(0, 43, 54); // Dark background for Solarized dark
const QColor solarized_base2 = QColor(238, 232, 213); // Light background for Solarized light
const QColor solarized_yellow = QColor(181, 137, 0);
const QColor solarized_orange = QColor(203, 75, 22);
const QColor solarized_red = QColor(220, 50, 47);
const QColor solarized_magenta = QColor(211, 54, 130);
const QColor solarized_violet = QColor(108, 113, 196);
const QColor solarized_blue = QColor(38, 139, 210);
const QColor solarized_cyan = QColor(42, 161, 152);
const QColor solarized_green = QColor(133, 153, 0);
// Choose background and text colors based on appearance
const QColor background = dark_appearance ? solarized_base03 : solarized_base2;
const QColor window_text = dark_appearance ? QColor(131, 148, 150) : QColor(0, 43, 54); // Adjusted for contrast
const QColor text = window_text;
// Derive other colors
const QColor light_color = background.lighter(150);
const QColor middle_color = (background.darker(130));
const QColor middle_light_color = middle_color.lighter(110);
const QColor base = dark_appearance ? background.darker(140) : QColor(253, 246, 227); // Solarized base2 for light
const QColor disabled_base = background;
const QColor window_text = dark_appearance ? QColor(240, 240, 240) : Qt::black;
const QColor background = dark_appearance ? QColor(50, 50, 50) : QColor(239, 239, 239);
const QColor light = background.lighter(150);
const QColor mid = (background.darker(130));
const QColor midlight = mid.lighter(110);
const QColor base = dark_appearance ? background.darker(140) : Qt::white;
const QColor disabled_base(background);
const QColor dark = background.darker(150);
const QColor disabled_dark = QColor(209, 209, 209).darker(110);
const QColor highlight = dark_appearance ? solarized_magenta : solarized_yellow; // Example highlight
const QColor disabled_highlight = QColor(145, 145, 145);
const QColor highlighted_text = dark_appearance ? window_text : QColor(0, 43, 54);
const QColor text = dark_appearance ? window_text : Qt::black;
const QColor highlight = QColor(48, 140, 198);
const QColor hightlighted_text = dark_appearance ? window_text : Qt::white;
const QColor disabled_text = dark_appearance ? QColor(130, 130, 130) : QColor(190, 190, 190);
const QColor button = background;
const QColor shadow = dark.darker(135);
@ -99,11 +83,11 @@ QPalette qt_fusionPalette(bool dark_appearance) {
QColor placeholder = text;
placeholder.setAlpha(128);
QPalette fusion_palette(window_text, background, light_color, dark, middle_color, text, base);
fusion_palette.setBrush(QPalette::Midlight, middle_light_color);
QPalette fusion_palette(window_text, background, light, dark, mid, text, base);
fusion_palette.setBrush(QPalette::Midlight, midlight);
fusion_palette.setBrush(QPalette::Button, button);
fusion_palette.setBrush(QPalette::Shadow, shadow);
fusion_palette.setBrush(QPalette::HighlightedText, highlighted_text);
fusion_palette.setBrush(QPalette::HighlightedText, hightlighted_text);
fusion_palette.setBrush(QPalette::Disabled, QPalette::Text, disabled_text);
fusion_palette.setBrush(QPalette::Disabled, QPalette::WindowText, disabled_text);
@ -114,7 +98,7 @@ QPalette qt_fusionPalette(bool dark_appearance) {
fusion_palette.setBrush(QPalette::Active, QPalette::Highlight, highlight);
fusion_palette.setBrush(QPalette::Inactive, QPalette::Highlight, highlight);
fusion_palette.setBrush(QPalette::Disabled, QPalette::Highlight, disabled_highlight);
fusion_palette.setBrush(QPalette::Disabled, QPalette::Highlight, QColor(145, 145, 145));
fusion_palette.setBrush(QPalette::PlaceholderText, placeholder);
@ -125,61 +109,6 @@ QPalette qt_fusionPalette(bool dark_appearance) {
return fusion_palette;
}
/*
* QPalette qt_fusionPalette(bool dark_appearance) {
// Define pastel and well-readable colors depending on appearance
const QColor window_text = dark_appearance ? QColor(200, 200, 200) : QColor(30, 30, 30);
const QColor background = dark_appearance ? QColor(40, 40, 50) : QColor(245, 245, 245);
const QColor light_color = background.lighter(150);
const QColor middle_color = background.darker(130);
const QColor middle_light_color = middle_color.lighter(110);
const QColor base = dark_appearance ? background.darker(140) : QColor(255, 255, 255);
const QColor disabled_base = background;
const QColor dark = background.darker(150);
const QColor disabled_dark = QColor(180, 180, 180).darker(110);
// Pastel accent colors for highlights
const QColor highlight = dark_appearance ? QColor(150, 200, 225) : QColor(100, 180, 220);
const QColor disabled_highlight = QColor(180, 180, 180);
const QColor highlighted_text = dark_appearance ? window_text : QColor(255, 255, 255);
const QColor disabled_text = dark_appearance ? QColor(130, 130, 130) : QColor(180, 180, 180);
const QColor button = background;
const QColor shadow = dark.darker(135);
const QColor disabled_shadow = shadow.lighter(150);
// Placeholder with semi-transparent effect
QColor placeholder = highlighted_text;
placeholder.setAlpha(128);
QPalette fusion_palette(window_text, background, light_color, dark, middle_color, highlighted_text, base);
fusion_palette.setBrush(QPalette::Midlight, middle_light_color);
fusion_palette.setBrush(QPalette::Button, button);
fusion_palette.setBrush(QPalette::Shadow, shadow);
fusion_palette.setBrush(QPalette::HighlightedText, highlighted_text);
// Disabled states
fusion_palette.setBrush(QPalette::Disabled, QPalette::Text, disabled_text);
fusion_palette.setBrush(QPalette::Disabled, QPalette::WindowText, disabled_text);
fusion_palette.setBrush(QPalette::Disabled, QPalette::ButtonText, disabled_text);
fusion_palette.setBrush(QPalette::Disabled, QPalette::Base, disabled_base);
fusion_palette.setBrush(QPalette::Disabled, QPalette::Dark, disabled_dark);
fusion_palette.setBrush(QPalette::Disabled, QPalette::Shadow, disabled_shadow);
// Highlight states
fusion_palette.setBrush(QPalette::Active, QPalette::Highlight, highlight);
fusion_palette.setBrush(QPalette::Inactive, QPalette::Highlight, highlight);
fusion_palette.setBrush(QPalette::Disabled, QPalette::Highlight, disabled_highlight);
// Placeholder text
fusion_palette.setBrush(QPalette::PlaceholderText, placeholder);
if (dark_appearance) {
fusion_palette.setBrush(QPalette::Link, highlight);
}
return fusion_palette;
}*/
void SkinFactory::loadSkinFromData(const Skin& skin, bool replace_existing_qss) {
#if QT_VERSION >= 0x060500 // Qt >= 6.5.0
auto system_color_scheme = qApp->styleHints()->colorScheme();
@ -261,7 +190,7 @@ void SkinFactory::loadSkinFromData(const Skin& skin, bool replace_existing_qss)
// colors are now derived from system.
#if QT_VERSION >= 0x060500 // Qt >= 6.5.0
else /*if (qApp->styleHints()->colorScheme() == Qt::ColorScheme::Light)*/ {
qApp->setPalette(qt_fusionPalette(true));
qApp->setPalette(qt_fusionPalette(false));
}
#endif
}