working on lite variant of nudus-*
This commit is contained in:
parent
79c81fb5ac
commit
cc660229af
|
@ -1,32 +1,23 @@
|
|||
# Compiled Object files.
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Compiled Dynamic libraries.
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Compiled Static libraries.
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables.
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
|
||||
# Other files.
|
||||
*.autosave
|
||||
*.user*
|
||||
localization/*qm
|
||||
*.TMP
|
||||
resources/skins/*/*.map
|
||||
|
||||
# Build directory.
|
||||
aqtinstall.log
|
||||
.sass-cache
|
||||
build-dir/
|
||||
docs/build
|
|
@ -0,0 +1,17 @@
|
|||
Media Player
|
||||
============
|
||||
RSS Guard offers some abilities everyone would expect from typical podcast client. It offers built-in media player on some platforms:
|
||||
* All[^1] [non-`lite`](../variants) builds offer `libmpv`-based media player which supports almost all features offered by `libmpv`, including keyboar d/mouse navigation, on-screen controller and custom configuration files loading. At this point. Also, `yt-dlp` is deployed on some[^2] platforms which allows comfortable Youtube videos playback.
|
||||
* All [`lite`](../variants) include more basic media player based on `QtMultimedia` backend. This backend is usually itself based on `ffmpeg` so it can play fairly wide range of media formats.
|
||||
|
||||
[^1]: At this point, precompiled binaries for Mac OS X do not have this backend enabled and rely on `QtMultimedia` backend instead.
|
||||
[^2]: `yt-dlp` is contained in binaries for Windows. For other operating systems, I recommend to install `yt-dlp` or `youtube-dl` system-wide and add it to your `PATH` environment variable. Also, custom path to the tool can be tweaked in `mpv.conf`.
|
||||
|
||||
## Usage
|
||||
This feature is available for each hyperlink URL. You can either right-click any link in embedded article/web browser or you can use `Articles -> Play in media player` menu item.
|
||||
|
||||
## Configuration
|
||||
See `Settings -> Media player` configuration section in RSS Guard. User data [placeholder](userdata) is supported.
|
||||
|
||||
## `libmpv` Backend
|
||||
Note that this backend does support full `mpv` configuration mechanism. You can set path to custom configuration folder in settings (see above). If you select empty folder, then RSS Guard automatically copies sample configuration files into it.
|
|
@ -0,0 +1,6 @@
|
|||
Variants
|
||||
========
|
||||
RSS Guard is distributed in two flavours:
|
||||
* Full package with `QtWebEngine`-based bundled article viewer: This variant displays articles with their full formatting and layout in embedded Chromium-based web browser. This variant of RSS Guard should be okay for everyone. Also, installation packages are relatively big. Also, this RSS Guard flavor offers more powerful [media player](features/mediaplayer).
|
||||
|
||||
* Lite package with simple text-based article viewer: This variant displays article in a much simpler and much more lightweight web viewer component. All packages of this variant have `lite` keyword in their names. This flavor of RSS Guard does NOT have a JavaScript support and is meant for people who value their privacy. Also, it offers more limited media player.
|
|
@ -83,6 +83,8 @@
|
|||
<file>skins/nudus-base/html_enclosure_image.html</file>
|
||||
<file>skins/nudus-base/html_single_message.html</file>
|
||||
<file>skins/nudus-base/html_wrapper.html</file>
|
||||
<file>skins/nudus-base/lite_html_enclosure_every.html</file>
|
||||
<file>skins/nudus-base/lite_html_single_message.html</file>
|
||||
|
||||
<file>skins/nudus-dark/html_wrapper.html</file>
|
||||
<file>skins/nudus-dark/html_style.css</file>
|
||||
|
@ -92,6 +94,7 @@
|
|||
<file>skins/nudus-light/html_style.css</file>
|
||||
<file>skins/nudus-light/metadata.xml</file>
|
||||
<file>skins/nudus-light/qt_style.qss</file>
|
||||
<file>skins/nudus-light/lite_html_style.css</file>
|
||||
|
||||
<file>initial_feeds/feeds-en_US.opml</file>
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
<a href="%1"><span>%2</span><span style="text-transform: uppercase;">%3</span></a>
|
|
@ -0,0 +1,15 @@
|
|||
<div dir="%9" id="%8">
|
||||
|
||||
<div>
|
||||
<div>%7</div>
|
||||
<span>%2</span>
|
||||
<h1>%1<span>%6<span> <a href="%3">URL</a></span></h1>
|
||||
<span>%5</span>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div>
|
||||
%4
|
||||
</div>
|
||||
</div>
|
|
@ -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;
|
||||
}
|
|
@ -1,15 +1,13 @@
|
|||
@charset "UTF-8";
|
||||
* {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
font-size: inherit; }
|
||||
|
||||
body, h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre, hr,
|
||||
dl, dd, ol, ul, figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
padding: 0; }
|
||||
|
||||
body {
|
||||
background-color: #FBFBFB;
|
||||
|
@ -19,148 +17,115 @@ body {
|
|||
-webkit-font-feature-settings: "kern" 1;
|
||||
font-feature-settings: "kern" 1;
|
||||
font-kerning: normal;
|
||||
min-height: 100vh;
|
||||
}
|
||||
min-height: 100vh; }
|
||||
|
||||
::selection {
|
||||
background-color: #5D88D2;
|
||||
text-shadow: none;
|
||||
}
|
||||
text-shadow: none; }
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre,
|
||||
ul, ol, dl, figure,
|
||||
details {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
margin-bottom: 10px; }
|
||||
|
||||
hr {
|
||||
background-color: #CFCFCF;
|
||||
border: none;
|
||||
display: block;
|
||||
height: 2px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
margin: 10px 0; }
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
font-weight: 600 !important; }
|
||||
|
||||
h1 {
|
||||
font-size: 1.25rem !important;
|
||||
}
|
||||
font-size: 1.25rem !important; }
|
||||
|
||||
h2 {
|
||||
font-size: 1.20rem !important;
|
||||
}
|
||||
font-size: 1.20rem !important; }
|
||||
|
||||
h3 {
|
||||
font-size: 1.15rem !important;
|
||||
}
|
||||
font-size: 1.15rem !important; }
|
||||
|
||||
h4 {
|
||||
font-size: 1.1rem !important;
|
||||
}
|
||||
font-size: 1.1rem !important; }
|
||||
|
||||
h5 {
|
||||
font-size: 1rem !important;
|
||||
}
|
||||
font-size: 1rem !important; }
|
||||
|
||||
h6 {
|
||||
font-size: .95rem !important;
|
||||
}
|
||||
font-size: .95rem !important; }
|
||||
|
||||
b {
|
||||
font-weight: bold !important;
|
||||
}
|
||||
font-weight: bold !important; }
|
||||
|
||||
i {
|
||||
font-style: italic !important;
|
||||
}
|
||||
font-style: italic !important; }
|
||||
|
||||
strong {
|
||||
font-weight: 800 !important;
|
||||
}
|
||||
font-weight: 800 !important; }
|
||||
|
||||
em {
|
||||
font-style: oblique !important;
|
||||
}
|
||||
font-style: oblique !important; }
|
||||
|
||||
mark {
|
||||
background-color: #FFECCC;
|
||||
}
|
||||
background-color: #FFECCC; }
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: .8rem !important;
|
||||
}
|
||||
font-size: .8rem !important; }
|
||||
|
||||
small {
|
||||
font-size: .9rem !important;
|
||||
}
|
||||
font-size: .9rem !important; }
|
||||
|
||||
abbr {
|
||||
cursor: help;
|
||||
font-style: italic !important;
|
||||
font-weight: 100 !important;
|
||||
}
|
||||
font-weight: 100 !important; }
|
||||
|
||||
q {
|
||||
font-style: italic !important;
|
||||
}
|
||||
q::before {
|
||||
content: '“';
|
||||
}
|
||||
q::after {
|
||||
content: '”';
|
||||
}
|
||||
font-style: italic !important; }
|
||||
q::before {
|
||||
content: '“'; }
|
||||
q::after {
|
||||
content: '”'; }
|
||||
|
||||
time {
|
||||
font-weight: 450 !important;
|
||||
}
|
||||
font-weight: 450 !important; }
|
||||
|
||||
var {
|
||||
font-style: oblique !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
font-weight: 500 !important; }
|
||||
|
||||
a {
|
||||
color: #5D88D2;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:focus {
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
}
|
||||
color: #5D88D2; }
|
||||
a:hover {
|
||||
text-decoration: none; }
|
||||
a:focus {
|
||||
box-shadow: none;
|
||||
outline: none; }
|
||||
|
||||
cite {
|
||||
font-style: italic !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
font-weight: bold !important; }
|
||||
|
||||
figure {
|
||||
max-width: 100%;
|
||||
}
|
||||
max-width: 100%; }
|
||||
|
||||
figure > img {
|
||||
display: block;
|
||||
}
|
||||
display: block; }
|
||||
|
||||
figcaption {
|
||||
font-size: .8rem !important;
|
||||
}
|
||||
font-size: .8rem !important; }
|
||||
|
||||
blockquote {
|
||||
border-left: 0.3em solid #CFCFCF;
|
||||
margin-left: 0;
|
||||
padding: 0 10px;
|
||||
}
|
||||
blockquote,
|
||||
blockquote p {
|
||||
color: #343434;
|
||||
}
|
||||
padding: 0 10px; }
|
||||
blockquote,
|
||||
blockquote p {
|
||||
color: #343434; }
|
||||
|
||||
pre,
|
||||
code {
|
||||
|
@ -168,14 +133,12 @@ code {
|
|||
border-radius: 0.1em;
|
||||
color: #343434;
|
||||
font-family: monospace;
|
||||
font-size: .95rem !important;
|
||||
}
|
||||
font-size: .95rem !important; }
|
||||
|
||||
code {
|
||||
background-color: #F1F1F1;
|
||||
padding: 0 .25em;
|
||||
word-break: break-word;
|
||||
}
|
||||
word-break: break-word; }
|
||||
|
||||
pre {
|
||||
background-color: #F1F1F1;
|
||||
|
@ -183,16 +146,14 @@ pre {
|
|||
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;
|
||||
}
|
||||
width: unset !important; }
|
||||
pre > code {
|
||||
background-color: unset;
|
||||
border: none;
|
||||
color: unset;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
tab-size: 2; }
|
||||
|
||||
kbd {
|
||||
background: #F1F1F1;
|
||||
|
@ -201,8 +162,7 @@ kbd {
|
|||
border-radius: 0.1em;
|
||||
box-shadow: 0 2px 4px #ececec, inset 0 1px #FBFBFB;
|
||||
font-size: .9rem !important;
|
||||
padding: .1em .4em .2em .4em;
|
||||
}
|
||||
padding: .1em .4em .2em .4em; }
|
||||
|
||||
select {
|
||||
background-color: #F1F1F1;
|
||||
|
@ -210,138 +170,105 @@ select {
|
|||
border-radius: 0.1em;
|
||||
color: #000000;
|
||||
padding: .04em .25em;
|
||||
width: 100%;
|
||||
}
|
||||
select:focus {
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
background-color: #FBFBFB;
|
||||
}
|
||||
select > option {
|
||||
background-color: #FBFBFB;
|
||||
}
|
||||
width: 100%; }
|
||||
select:focus {
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
background-color: #FBFBFB; }
|
||||
select > option {
|
||||
background-color: #FBFBFB; }
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100% !important;
|
||||
}
|
||||
width: 100% !important; }
|
||||
|
||||
li {
|
||||
display: list-item;
|
||||
}
|
||||
display: list-item; }
|
||||
|
||||
ul,
|
||||
ol {
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
padding-left: 1.5em; }
|
||||
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
ul li ul {
|
||||
list-style-type: square;
|
||||
}
|
||||
list-style-type: disc; }
|
||||
ul li ul {
|
||||
list-style-type: square; }
|
||||
|
||||
ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
ol li ol {
|
||||
list-style-type: lower-roman;
|
||||
}
|
||||
list-style-type: decimal; }
|
||||
ol li ol {
|
||||
list-style-type: lower-roman; }
|
||||
|
||||
img {
|
||||
height: auto;
|
||||
}
|
||||
height: auto; }
|
||||
|
||||
details {
|
||||
border: 1px solid #F1F1F1;
|
||||
border-radius: 0.1em;
|
||||
padding: .5em .5em 0;
|
||||
}
|
||||
details > summary {
|
||||
background-color: #F1F1F1;
|
||||
border-radius: 0.09em;
|
||||
cursor: pointer;
|
||||
margin: -.5em -.5em 0;
|
||||
padding-left: .5em;
|
||||
}
|
||||
details > summary:focus {
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
}
|
||||
details *:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
padding: .5em .5em 0; }
|
||||
details > summary {
|
||||
background-color: #F1F1F1;
|
||||
border-radius: 0.09em;
|
||||
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: #DEDEDE;
|
||||
padding: .5em;
|
||||
}
|
||||
details[open] > summary {
|
||||
border-bottom: 1px solid #DEDEDE;
|
||||
border-radius: 0.09em 0.09em 0 0;
|
||||
margin-bottom: .5em;
|
||||
}
|
||||
padding: .5em; }
|
||||
details[open] > summary {
|
||||
border-bottom: 1px solid #DEDEDE;
|
||||
border-radius: 0.09em 0.09em 0 0;
|
||||
margin-bottom: .5em; }
|
||||
|
||||
iframe {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
width: auto;
|
||||
}
|
||||
width: auto; }
|
||||
|
||||
a:focus,
|
||||
select:focus,
|
||||
summary:focus {
|
||||
background-color: #DEDEDE;
|
||||
text-shadow: 0 -1px #FBFBFB;
|
||||
}
|
||||
text-shadow: 0 -1px #FBFBFB; }
|
||||
|
||||
:target {
|
||||
outline: 1px solid #5D88D2;
|
||||
}
|
||||
outline: 1px solid #5D88D2; }
|
||||
|
||||
.rssguard-mwrapper {
|
||||
padding: 10px !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;
|
||||
}
|
||||
.rssguard-mwrapper .rssguard-mbody img {
|
||||
max-width: 450px !important;
|
||||
max-height: unset !important;
|
||||
}
|
||||
@media only screen and (max-width: 800px) {
|
||||
padding: 10px !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; }
|
||||
.rssguard-mwrapper .rssguard-mbody img {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
}
|
||||
max-width: 450px !important;
|
||||
max-height: unset !important; }
|
||||
@media only screen and (max-width: 800px) {
|
||||
.rssguard-mwrapper .rssguard-mbody img {
|
||||
max-width: 100% !important; } }
|
||||
|
||||
.rssguard-mbody {
|
||||
word-break: break-word;
|
||||
}
|
||||
word-break: break-word; }
|
||||
|
||||
table {
|
||||
word-break: normal;
|
||||
}
|
||||
word-break: normal; }
|
||||
|
||||
::selection {
|
||||
color: #F1F1F1;
|
||||
}
|
||||
color: #F1F1F1; }
|
||||
|
||||
/*# sourceMappingURL=html_style.css.map */
|
||||
|
|
|
@ -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: #FBFBFB;
|
||||
color: #000000; }
|
||||
|
||||
a {
|
||||
color: #0f80f1; }
|
|
@ -0,0 +1,7 @@
|
|||
@charset "utf-8";
|
||||
|
||||
$col_back: #FBFBFB !default;
|
||||
$col_front: #000000 !default;
|
||||
$col_link: #0f80f1 !default;
|
||||
|
||||
@import "../nudus-base/lite_html_style_base";
|
|
@ -38,6 +38,7 @@ TextBrowserViewer::TextBrowserViewer(QWidget* parent)
|
|||
setDocument(m_document.data());
|
||||
|
||||
// Apply master CSS.
|
||||
/*
|
||||
QColor a_color = qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgInteresting).value<QColor>();
|
||||
|
||||
if (!a_color.isValid()) {
|
||||
|
@ -45,6 +46,7 @@ TextBrowserViewer::TextBrowserViewer(QWidget* parent)
|
|||
}
|
||||
|
||||
m_document.data()->setDefaultStyleSheet(QSL("a { color: %1; }").arg(a_color.name()));
|
||||
*/
|
||||
|
||||
/*
|
||||
m_document->setDefaultStyleSheet("p {"
|
||||
|
|
Loading…
Reference in New Issue