aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/en/img/users/configuration.article.icons.pngbin0 -> 11154 bytes
-rw-r--r--docs/en/img/users/configuration.navigation.button.pngbin0 -> 491 bytes
-rw-r--r--docs/en/img/users/configuration.sharing.pngbin0 -> 15297 bytes
-rw-r--r--docs/en/users/03_Main_view.md3
-rw-r--r--docs/en/users/05_Configuration.md89
-rw-r--r--docs/en/users/06_Fever_API.md113
-rw-r--r--docs/en/users/06_Mobile_access.md34
-rw-r--r--docs/en/users/07_Frequently_Asked_Questions.md10
-rw-r--r--docs/fr/users/03_Main_view.md5
-rw-r--r--docs/fr/users/06_Fever_API.md19
-rw-r--r--docs/fr/users/06_Mobile_access.md36
-rw-r--r--docs/fr/users/07_Frequently_Asked_Questions.md8
-rw-r--r--docs/img/FreshRSS-logo-font.svg16
-rw-r--r--docs/img/FreshRSS-logo.svg25
14 files changed, 348 insertions, 10 deletions
diff --git a/docs/en/img/users/configuration.article.icons.png b/docs/en/img/users/configuration.article.icons.png
new file mode 100644
index 000000000..d1dd768ad
--- /dev/null
+++ b/docs/en/img/users/configuration.article.icons.png
Binary files differ
diff --git a/docs/en/img/users/configuration.navigation.button.png b/docs/en/img/users/configuration.navigation.button.png
new file mode 100644
index 000000000..045956472
--- /dev/null
+++ b/docs/en/img/users/configuration.navigation.button.png
Binary files differ
diff --git a/docs/en/img/users/configuration.sharing.png b/docs/en/img/users/configuration.sharing.png
new file mode 100644
index 000000000..a3cfd0570
--- /dev/null
+++ b/docs/en/img/users/configuration.sharing.png
Binary files differ
diff --git a/docs/en/users/03_Main_view.md b/docs/en/users/03_Main_view.md
index adb62c7ec..57eab192d 100644
--- a/docs/en/users/03_Main_view.md
+++ b/docs/en/users/03_Main_view.md
@@ -181,3 +181,6 @@ Some operators can be used negatively, to exclude articles, with the same syntax
`-author:name`, `-intitle:keyword`, `-inurl:keyword`, `-#tag`, `!keyword`.
It is also possible to combine operators to have a very sharp filter, and it is allowed to have multiple instances of `author:`, `intitle:`, `inurl:`, `#`, and free-text.
+
+Combining several search criteria implies a logical *and*, but the keyword ` OR ` can be used to combine several search criteria with a logical *or* instead:
+`author:Dupont OR author:Dupond`
diff --git a/docs/en/users/05_Configuration.md b/docs/en/users/05_Configuration.md
index d0951e905..154cd98b5 100644
--- a/docs/en/users/05_Configuration.md
+++ b/docs/en/users/05_Configuration.md
@@ -3,9 +3,29 @@
## Language
-At the moment, FreshRSS is available in French and English. After you confirm your choice, the whole interface will be displayed in the chosen language.
-
-There are parts of FreshRSS that are not translated and are not intended to be translated. For now, the logs visible in the application as well as the one generated by the script of automatic update are part of it.
+At the moment, FreshRSS is available in 13 languages. After you confirm your choice, the interface will be displayed in the chosen language.
+Depending on the chosen language, there might be parts of the interface that are still not translated. If you're willing to help translating
+the missing bits or add a new language, please check how you can [contribute to the project](../contributing.md#contribute-to-internationalization-i18n).
+
+There are parts of FreshRSS that are not translated and are not intended to be translated. For now, the logs visible in the application as well as the one generated by automatic update scripts are part of it.
+
+Not all languages are equals regarding completion:
+
+| Language | Completion |
+|----------|-----------:|
+| cz | 87.4% |
+| de | 88.1% |
+| en | 100% |
+| es | 88.7% |
+| fr | 99.3% |
+| he | 69.6% |
+| it | 86.4% |
+| kr | 96.3% |
+| nl | 95.4% |
+| pt-br | 87.4% |
+| ru | 36.4% |
+| tr | 88.1% |
+| zh-cn | 99.0% |
## Theme
@@ -33,7 +53,16 @@ There are some who prefer short lines of text while others prefer to maximize th
## Article icons
-**TODO**
+It worth noting that this section only has effects in normal view.
+
+![Article icons configuration](../img/users/configuration.article.icons.png)
+
+Each article is rendered with a header (top line) and a footer (bottom line).
+In that section, you can choose what will be displayed in those.
+
+If you disable every item in the top line, you'll still be able to see it since
+there is the feed name and the article title. But if you do the same thing for
+the bottom line, it will be empty.
## HTML5 notification timout
@@ -41,6 +70,14 @@ After the automatic updates of the feeds, FreshRSS uses the HTML5 notification A
The duration of this notification can be set. By default, the value is 0.
+## Show the navigation button
+
+By default, FreshRSS displays buttons to ease the article navigation when browsing on mobile. The drawback is that they eat up some precious space.
+
+![navigation button configuration](../img/users/configuration.navigation.button.png)
+
+If you don't use those buttons because you never browse on mobile or because you browse with gestures, you can disable them from the interface.
+
# Reading
**TODO**
@@ -51,15 +88,53 @@ The duration of this notification can be set. By default, the value is 0.
# Sharing
-**TODO**
+To make your life easier, you can share directly an article within FreshRSS.
+
+At the moment, FreshRSS supports 15 sharing methods ranging from self-hosted services (Shaarli, etc.) to proprietary services (Facebook, etc.).
+
+By default, the sharing list is empty.
+![Sharing configuration](../img/users/configuration.sharing.png)
+
+To add a new item in the list, follow those simple steps:
+
+ 1. Select the share method in the drop-down.
+ 1. Press the ```✚``` sign to add it to the list.
+ 1. Configure the method in the list. All method names can be modified in the display. Some methods need the sharing URL to be able to work properly (ex: Shaarli).
+ 1. Submit your changes.
+
+To remove an item from the list, follow those simple steps:
+
+ 1. Press the ```❌``` sign next to the share method you want to remove.
+ 1. Submit your changes.
# Shortcuts
-**TODO**
+To ease the use of the application, FreshRSS comes with a lot of predefined keyboard shortcuts.
+They allow actions to improve the user experience with a keyboard.
+
+Of course, if you're not satisfied with the key mapping, you can change you configuration to fit your needs.
+
+There are 4 types of shortcuts:
+
+ 1. Views: they allow switching views with ease.
+ 1. Navigation: they allow navigation through articles, feeds, and categories.
+ 1. Article actions: they allow interactions with an article, like sharing or opening it on the original web-site.
+ 1. Other actions: they allow other interactions with the application, like opening the user queries menu or accessing the documentation.
+
+It's worth noting that the share article action has two levels. Once you press the shortcut, a menu containing all the share options opens.
+To choose one share option, you need to select it by its number. When there is only one option, it's selected automatically though.
+
+The same process applies to the user queries.
+
+Be aware that there is no validation on the selected shortcuts.
+This means that if you assign a shortcut to more than one action, you'll end up with some unexpected behavior.
# User queries
-**TODO**
+You can configure your [user queries](./03_Main_view.md) in that section. There is not much to say here as it is pretty straightforward.
+You can only change user query titles or drop them.
+
+At the moment, there is no helper to build a user query from here.
# Users
diff --git a/docs/en/users/06_Fever_API.md b/docs/en/users/06_Fever_API.md
new file mode 100644
index 000000000..6d8a103b9
--- /dev/null
+++ b/docs/en/users/06_Fever_API.md
@@ -0,0 +1,113 @@
+# FreshRSS - Fever API implementation
+
+See the [page about our Google Reader compatible API](06_Mobile_access.md) for another possibility
+and general aspects of API access.
+
+## RSS clients
+
+There are many RSS clients existing supporting Fever APIs but they seem to understand the Fever API a bit differently.
+If your favourite client does not work properly with this API, create an issue and we will have a look.
+But we can **only** do that for free clients.
+
+### Usage & Authentication
+
+Before you can start to use this API, you have to enable and setup API access, which is [documented here](https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html),
+and then re-set the user’s API password.
+
+Then point your mobile application to the URL of `fever.php` (e.g. `https://freshrss.example.net/api/fever.php`).
+
+## Compatibility
+
+Tested with:
+
+- iOS
+ - [Fiery Feeds](https://itunes.apple.com/app/fiery-feeds-rss-reader/id1158763303)
+ - [Unread](https://itunes.apple.com/app/unread-rss-reader/id1252376153)
+
+- MacOS
+ - [Readkit](https://itunes.apple.com/app/readkit/id588726889)
+
+- Android
+ -Until now, we don't know about compatible Android clients. Please leave your feedback, if you tested the Fever API with Android apps.
+ - Please note, that *Press* is NOT compatible: it was a popular RSS client with Fever support, but its development stopped a while ago. It uses the Fever API in a wrong way, which we don't support.
+
+## Features
+
+Following features are implemented:
+
+- fetching categories
+- fetching feeds
+- fetching RSS items (new, favorites, unread, by_id, by_feed, by_category, since)
+- fetching favicons
+- setting read marker for item(s)
+- setting starred marker for item(s)
+- setting read marker for feed
+- setting read marker for category
+- supports FreshRSS extensions, which use th `entry_before_display` hook
+
+Following features are not supported:
+- **Hot Links** aka **hot** as there is nothing in FreshRSS yet that is similar or could be used to simulate it
+
+## Testing and error search
+
+If this API does not work as expected in your RSS reader, you can test it manually with a tool like [Postman](https://www.getpostman.com/).
+
+Configure a POST request to the URL https://freshrss.example.net/api/fever.php?api which should give you the result:
+```json
+{
+ "api_version": 3,
+ "auth": 0
+}
+```
+Great, the base setup seems to work!
+
+Now lets try an authenticated call. Fever uses an `api_key`, which is the MD5 hash of `"$username:$apiPassword"`.
+Assuming the user is `kevin` and the password `freshrss`, here is a command-line example to compute the resulting `api_key`
+
+```sh
+api_key=`echo -n "kevin:freshrss" | md5sum | cut -d' ' -f1`
+```
+
+Add a body to your POST request encoded as `form-data` and one key named `api_key` with the value `your-password-hash`:
+
+```sh
+curl -s -F "api_key=$api_key" 'https://freshrss.example.net/api/fever.php?api'
+```
+
+This shoud give:
+```json
+{
+ "api_version": 3,
+ "auth": 1,
+ "last_refreshed_on_time": "1520013061"
+}
+```
+Perfect, you are authenticated and can now start testing the more advanced features. Therefor change the URL and append the possible API actions to your request parameters. Check the [original Fever documentation](https://feedafever.com/api) for more infos.
+
+Some basic calls are:
+
+- https://freshrss.example.net/api/fever.php?api&items
+- https://freshrss.example.net/api/fever.php?api&feeds
+- https://freshrss.example.net/api/fever.php?api&groups
+- https://freshrss.example.net/api/fever.php?api&unread_item_ids
+- https://freshrss.example.net/api/fever.php?api&saved_item_ids
+- https://freshrss.example.net/api/fever.php?api&items&since_id=some_id
+- https://freshrss.example.net/api/fever.php?api&items&max_id=some_id
+- https://freshrss.example.net/api/fever.php?api&mark=item&as=read&id=some_id
+- https://freshrss.example.net/api/fever.php?api&mark=item&as=unread&id=some_id
+
+Replace `some_id` with a real ID from your `freshrss_username_entry` database.
+
+### Debugging
+
+If nothing helps and your clients still misbehaves, add these lines to the start of `fever.api`:
+
+```php
+file_put_contents(__DIR__ . '/fever.log', $_SERVER['HTTP_USER_AGENT'] . ': ' . json_encode($_REQUEST) . PHP_EOL, FILE_APPEND);
+```
+
+Then use your RSS client to query the API and afterwards check the file `fever.log`.
+
+## Credits
+
+This plugin was inspired by the [tinytinyrss-fever-plugin](https://github.com/dasmurphy/tinytinyrss-fever-plugin).
diff --git a/docs/en/users/06_Mobile_access.md b/docs/en/users/06_Mobile_access.md
index 166985585..c354f98f0 100644
--- a/docs/en/users/06_Mobile_access.md
+++ b/docs/en/users/06_Mobile_access.md
@@ -7,6 +7,9 @@ This page assumes you have completed the [server setup](../admins/02_Installatio
* Every user must define an API password.
* The reason for an API-specific password is that it may be used in less safe situations than the main password, and does not grant access to as many things.
+The rest of this page is about the Google Reader compatible API.
+See the [page about the Fever compatible API](06_Fever_API.md) for another possibility.
+
# Testing
@@ -50,3 +53,34 @@ This page assumes you have completed the [server setup](../admins/02_Installatio
* [EasyRSS](https://github.com/Alkarex/EasyRSS) (Open source, [F-Droid](https://f-droid.org/packages/org.freshrss.easyrss/))
* Linux
* [FeedReader 2.0+](https://jangernert.github.io/FeedReader/) (Open source)
+
+
+# Google Reader compatible API
+
+Examples of basic queries:
+
+```sh
+# Initial login, using API password (Email and Passwd can be given either as GET, or POST - better)
+curl 'https://freshrss.example.net/api/greader.php/accounts/ClientLogin?Email=alice&Passwd=Abcdef123456'
+SID=alice/8e6845e089457af25303abc6f53356eb60bdb5f8
+Auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8
+
+# Examples of read-only requests
+curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/subscription/list?output=json'
+
+curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/unread-count?output=json'
+
+curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/tag/list?output=json'
+
+# Retrieve a token for requests making modifications
+curl -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/token'
+8e6845e089457af25303abc6f53356eb60bdb5f8ZZZZZZZZZZZZZZZZZ
+
+# Get articles, piped to jq for easier JSON reading
+curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/stream/contents/reading-list' | jq .
+```
diff --git a/docs/en/users/07_Frequently_Asked_Questions.md b/docs/en/users/07_Frequently_Asked_Questions.md
index 132b2e7ec..42156b1a9 100644
--- a/docs/en/users/07_Frequently_Asked_Questions.md
+++ b/docs/en/users/07_Frequently_Asked_Questions.md
@@ -43,4 +43,12 @@ Since [1.8.0](https://github.com/FreshRSS/FreshRSS/releases/tag/1.8.0) release,
```sh
./cli/update_user.php --user <username> --password <password>
```
-For more information on that matter, there is a [dedicated documentation](../../cli/README.md). \ No newline at end of file
+For more information on that matter, there is a [dedicated documentation](../../cli/README.md).
+
+## Permissions under SELinux
+
+Some Linux distribution like Fedora or RedHat Enterprise Linux have SELinux system enabled. This acts like a firewall application, so all applications cannot write/modify files under certain conditions. While installing FreshRSS, step 2 can fail if the httpd process cannot write to some data sub-directories, the following command should be executed as root :
+```sh
+semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/FreshRSS/data(/.*)?'
+restorecon -Rv /usr/share/FreshRSS/data
+```
diff --git a/docs/fr/users/03_Main_view.md b/docs/fr/users/03_Main_view.md
index ebf782136..af3a5a1db 100644
--- a/docs/fr/users/03_Main_view.md
+++ b/docs/fr/users/03_Main_view.md
@@ -180,4 +180,7 @@ Attention à ne pas introduire d’espace entre l’opérateur et la valeur rech
Certains opérateurs peuvent être utilisé négativement, pour exclure des articles, avec la même syntaxe que ci-dessus, mais préfixé par `!` ou `-` :
`-author:nom`, `-intitle:mot`, `-inurl:mot`, `-#tag`, `!mot`.
-Il est également possible de combiner les mots-clefs pour faire un filtrage encore plus précis, and et il est autorisé d’avoir plusieurs instances de : `author:`, `intitle:`, `inurl:`, `#`, et texte libre.
+Il est également possible de combiner les mots-clefs pour faire un filtrage encore plus précis, et il est autorisé d’avoir plusieurs instances de : `author:`, `intitle:`, `inurl:`, `#`, et texte libre.
+
+Combiner plusieurs critères implique un *et* logique, mais le mot clef ` OR ` peut être utiliser pour combiner plusieurs critères avec un *ou* logique :
+`author:Dupont OR author:Dupond`
diff --git a/docs/fr/users/06_Fever_API.md b/docs/fr/users/06_Fever_API.md
new file mode 100644
index 000000000..6ad817041
--- /dev/null
+++ b/docs/fr/users/06_Fever_API.md
@@ -0,0 +1,19 @@
+# FreshRSS - API compatible Fever
+
+Voir la page [sur notre API compatible Google Reader](06_Mobile_access.md) pour une autre possibilité
+et des généralités sur l’accès par API.
+
+## Compatibilité
+
+Testé avec:
+
+- iOS
+ - [Fiery Feeds](https://itunes.apple.com/app/fiery-feeds-rss-reader/id1158763303)
+ - [Unread](https://itunes.apple.com/app/unread-rss-reader/id1252376153)
+
+- MacOS
+ - [Readkit](https://itunes.apple.com/app/readkit/id588726889)
+
+## TODO
+
+Voir [la page en anglais](../../en/users/06_Fever_API.md).
diff --git a/docs/fr/users/06_Mobile_access.md b/docs/fr/users/06_Mobile_access.md
index 8ef3d038a..b8e7c31f0 100644
--- a/docs/fr/users/06_Mobile_access.md
+++ b/docs/fr/users/06_Mobile_access.md
@@ -7,6 +7,9 @@ Cette page suppose que vous avez fini [l’installation du serveur](01_Installat
* Chaque utilisateur doit choisir son mot de passe API.
* La raison d’être d’un mot de passe API différent du mot de passe principal est que le mot de passe API est potentiellement utilisé de manière moins sûre, mais il permet aussi moins de choses.
+Le reste de cette page concerne l’API compatible Google Reader.
+Voir la [page sur l’API compatible Fever](06_Fever_API.md) pour une autre possibilité.
+
# Tester
@@ -17,7 +20,7 @@ Cette page suppose que vous avez fini [l’installation du serveur](01_Installat
* Si vous obtenez un autre message d’erreur, passer à l’étape 5.
-# Débogger la configuration du serveur
+# Déboguer la configuration du serveur
5. Cliquer sur le second lien “Check partial server configuration (without `%2F` support)”:
* Si vous obtenez `PASS`, alors le problème est bien que votre serveur n’accepte pas les slashs `/` qui sont encodés `%2F`.
@@ -48,3 +51,34 @@ Tout client supportant une API de type Google Reader. Sélection :
* [EasyRSS](https://github.com/Alkarex/EasyRSS) (Libre, F-Droid)
* Linux
* [FeedReader 2.0+](https://jangernert.github.io/FeedReader/) (Libre)
+
+
+# API compatible Google Reader
+
+Exemples de requêtes simples:
+
+```sh
+# Authentification utilisant le mot de passe API (Email et Passwd peuvent être passés en GET, ou POST - mieux)
+curl 'https://freshrss.example.net/api/greader.php/accounts/ClientLogin?Email=alice&Passwd=Abcdef123456'
+SID=alice/8e6845e089457af25303abc6f53356eb60bdb5f8
+Auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8
+
+# Exemples de requêtes en lecture
+curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/subscription/list?output=json'
+
+curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/unread-count?output=json'
+
+curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/tag/list?output=json'
+
+# Demande de jeton pour faire de requêtes de modification
+curl -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/token'
+8e6845e089457af25303abc6f53356eb60bdb5f8ZZZZZZZZZZZZZZZZZ
+
+# Récupère les articles, envoyés à jq pour une lecture JSON plus facile
+curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
+ 'https://freshrss.example.net/api/greader.php/reader/api/0/stream/contents/reading-list' | jq .
+```
diff --git a/docs/fr/users/07_Frequently_Asked_Questions.md b/docs/fr/users/07_Frequently_Asked_Questions.md
index f27c92579..2dc2cae97 100644
--- a/docs/fr/users/07_Frequently_Asked_Questions.md
+++ b/docs/fr/users/07_Frequently_Asked_Questions.md
@@ -44,3 +44,11 @@ Depuis la version [1.8.0](https://github.com/FreshRSS/FreshRSS/releases/tag/1.8.
./cli/update_user.php --user <username> --password <password>
```
Pour plus d'information à ce sujet, il existe la [documentation dédiée](../../cli/README.md).
+
+## Gérer les permissions sous SELinux
+
+Certaines distributions Linux comme Fedora ou RedHat Enterprise Linux (RHEL) activent par défaut le système SELinux. Celui-ci permet de gérer des permissions au niveau des processus. Lors de l'installation de FreshRSS, l'étape 2 procède à la vérification des droits sur certains répertoires, il faut donc exécuter la commande suivante en tant que root:
+```sh
+semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/FreshRSS/data(/.*)?'
+restorecon -Rv /usr/share/FreshRSS/data
+```
diff --git a/docs/img/FreshRSS-logo-font.svg b/docs/img/FreshRSS-logo-font.svg
new file mode 100644
index 000000000..134adfdfc
--- /dev/null
+++ b/docs/img/FreshRSS-logo-font.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 256"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>Logo FreshRSS</title>
+ <circle fill="#0062BE" cx="128" cy="128" r="33"/>
+ <g fill="none" stroke="#0062BE" stroke-width="24">
+ <g stroke-opacity="0.3">
+ <path d="M12,128 A116,116 0 1,1 128,244"/>
+ <path d="M54,128 A74,74 0 1,1 128,202"/>
+ </g>
+ <path d="M128,12 A116,116 0 0,1 244,128"/>
+ <path d="M128,54 A74,74 0 0,1 202,128"/>
+ </g>
+ <text x="309" y="206" fill="#0062bd" stroke-width="0"
+ font-family="'Open Sans'" font-weight="600" font-size="213">FreshRSS</text>
+</svg>
+
diff --git a/docs/img/FreshRSS-logo.svg b/docs/img/FreshRSS-logo.svg
new file mode 100644
index 000000000..4eb268c8a
--- /dev/null
+++ b/docs/img/FreshRSS-logo.svg
@@ -0,0 +1,25 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 256"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>Logo FreshRSS</title>
+ <circle fill="#0062BE" cx="128" cy="128" r="33"/>
+ <g fill="none" stroke="#0062BE" stroke-width="24">
+ <g stroke-opacity="0.3">
+ <path d="M12,128 A116,116 0 1,1 128,244"/>
+ <path d="M54,128 A74,74 0 1,1 128,202"/>
+ </g>
+ <path d="M128,12 A116,116 0 0,1 244,128"/>
+ <path d="M128,54 A74,74 0 0,1 202,128"/>
+ </g>
+ <g fill="#0062bd" stroke-width="0" font-family="'Open Sans'" font-weight="600" font-size="213">
+ <desc>FreshRSS</desc>
+ <path d="m 353.72168,206 -24.64893,0 0,-152.053711 85.80323,0 0,21.008789 -61.1543,0 0,47.529782 57.30615,0 0,21.1128 -57.30615,0 0,62.40234 z" />
+ <path d="m 498.39111,88.891602 q 7.38428,0 12.16846,1.040039 l -2.39209,22.776859 q -5.20019,-1.24805 -10.81641,-1.24805 -14.66455,0 -23.81689,9.56836 -9.04834,9.56836 -9.04834,24.85693 l 0,60.11426 -24.44092,0 0,-115.02832 19.13672,0 3.22412,20.28076 1.24805,0 q 5.72021,-10.29639 14.87256,-16.328612 9.25634,-6.032226 19.86474,-6.032226 z" />
+ <path d="m 582.21826,208.08008 q -26.83301,0 -42.01758,-15.60059 -15.08056,-15.70459 -15.08056,-43.16162 0,-28.18506 14.04052,-44.30566 14.04053,-16.120608 38.58545,-16.120608 22.77686,0 35.98536,13.832518 13.20849,13.83252 13.20849,38.06543 l 0,13.2085 -76.65088,0 q 0.52002,16.74463 9.04834,25.79297 8.52832,8.94433 24.0249,8.94433 10.19239,0 18.92872,-1.87207 8.84033,-1.97607 18.92871,-6.44824 l 0,19.86475 q -8.94434,4.26416 -18.09668,6.03222 -9.15235,1.76807 -20.90479,1.76807 z M 577.74609,107.4043 q -11.64843,0 -18.7207,7.38427 -6.96826,7.38428 -8.32031,21.52881 l 52.20996,0 q -0.20801,-14.24853 -6.86426,-21.52881 -6.65625,-7.38427 -18.30469,-7.38427 z" />
+ <path d="m 731.98389,173.23877 q 0,16.84863 -12.27246,25.89697 -12.27247,8.94434 -35.15332,8.94434 -22.98487,0 -36.92139,-6.96826 l 0,-21.1128 q 20.28076,9.36035 37.75342,9.36035 22.56884,0 22.56884,-13.62451 0,-4.36816 -2.49609,-7.28027 -2.49609,-2.91211 -8.21631,-6.03223 -5.72021,-3.12011 -15.9126,-7.07226 -19.86474,-7.69629 -26.93701,-15.39258 -6.96826,-7.69629 -6.96826,-19.96875 0,-14.76856 11.85645,-22.88086 11.96045,-8.216308 32.44921,-8.216308 20.28077,0 38.37745,8.216308 l -7.9043,18.40869 q -18.6167,-7.69629 -31.30518,-7.69629 -19.34472,0 -19.34472,11.02442 0,5.4082 4.99218,9.15234 5.0962,3.74414 22.04883,10.29639 14.24854,5.5122 20.69678,10.08838 6.44824,4.57617 9.56836,10.60839 3.12012,5.92823 3.12012,14.24854 z" />
+ <path d="m 859.49268,206 -24.54493,0 0,-70.72266 q 0,-13.3125 -5.4082,-19.86474 -5.3042,-6.55225 -16.95264,-6.55225 -15.39257,0 -22.67285,9.25635 -7.17627,9.15234 -7.17627,30.78516 l 0,57.09814 -24.44092,0 0,-161.830078 24.44092,0 0,41.081543 q 0,9.880371 -1.24804,21.112795 l 1.56005,0 q 4.99219,-8.320315 13.83252,-12.896487 8.94434,-4.576171 20.80079,-4.576171 41.80957,0 41.80957,42.121578 l 0,74.98682 z" />
+ <path d="m 920.95898,124.66895 17.26465,0 q 17.36866,0 25.16895,-6.44825 7.80029,-6.44824 7.80029,-19.136716 0,-12.896484 -8.42432,-18.512695 -8.42431,-5.616211 -25.37695,-5.616211 l -16.43262,0 0,49.713872 z m 0,20.59277 0,60.73828 -24.85693,0 0,-152.053711 42.95361,0 q 29.43311,0 43.57764,11.024414 14.14453,11.024414 14.14453,33.28125 0,28.393067 -29.53711,40.457517 L 1010.1943,206 l -28.28903,0 -36.40136,-60.73828 -24.54493,0 z" />
+ <path d="m 1119.8145,164.71045 q 0,20.28076 -14.6646,31.82519 -14.6645,11.54444 -40.4575,11.54444 -25.793,0 -42.2256,-8.0083 l 0,-23.50489 q 10.4004,4.88819 22.0488,7.69629 11.7525,2.80811 21.8408,2.80811 14.7686,0 21.7369,-5.61621 7.0722,-5.61621 7.0722,-15.08057 0,-8.52832 -6.4482,-14.45654 -6.4483,-5.92822 -26.625,-14.04053 -20.8008,-8.42432 -29.3291,-19.24072 -8.5283,-10.81641 -8.5283,-26.000978 0,-19.032715 13.5205,-29.953125 13.5205,-10.92041 36.2973,-10.92041 21.8409,0 43.4737,9.568359 l -7.9043,20.280762 q -20.2808,-8.52832 -36.1934,-8.52832 -12.0644,0 -18.3047,5.304199 -6.2402,5.200195 -6.2402,13.83252 0,5.928222 2.4961,10.192383 2.4961,4.16016 8.2163,7.9043 5.7202,3.74414 20.5928,9.88037 16.7446,6.96826 24.5449,13.00049 7.8003,6.03222 11.4404,13.62451 3.6402,7.59228 3.6402,17.88867 z" />
+ <path d="m 1237.1309,164.71045 q 0,20.28076 -14.6646,31.82519 -14.6645,11.54444 -40.4575,11.54444 -25.793,0 -42.2256,-8.0083 l 0,-23.50489 q 10.4004,4.88819 22.0488,7.69629 11.7525,2.80811 21.8409,2.80811 14.7685,0 21.7368,-5.61621 7.0722,-5.61621 7.0722,-15.08057 0,-8.52832 -6.4482,-14.45654 -6.4483,-5.92822 -26.625,-14.04053 -20.8008,-8.42432 -29.3291,-19.24072 -8.5283,-10.81641 -8.5283,-26.000978 0,-19.032715 13.5205,-29.953125 13.5205,-10.92041 36.2973,-10.92041 21.8409,0 43.4737,9.568359 l -7.9043,20.280762 q -20.2808,-8.52832 -36.1934,-8.52832 -12.0644,0 -18.3047,5.304199 -6.2402,5.200195 -6.2402,13.83252 0,5.928222 2.4961,10.192383 2.4961,4.16016 8.2163,7.9043 5.7202,3.74414 20.5928,9.88037 16.7446,6.96826 24.5449,13.00049 7.8003,6.03222 11.4404,13.62451 3.6402,7.59228 3.6402,17.88867 z" />
+ </g>
+</svg>
+