diff --git a/.github/workflows/typos.yml b/.github/workflows/typos.yml
new file mode 100644
index 000000000..2e0f6a4ee
--- /dev/null
+++ b/.github/workflows/typos.yml
@@ -0,0 +1,15 @@
+name: CI
+on:
+ pull_request:
+ push:
+ branches:
+ - "main"
+jobs:
+ typos:
+ name: Spell Check with Typos
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Actions Repository
+ uses: actions/checkout@v3
+ - name: Check spelling
+ uses: crate-ci/typos@master
diff --git a/.typos.toml b/.typos.toml
new file mode 100644
index 000000000..361c9be40
--- /dev/null
+++ b/.typos.toml
@@ -0,0 +1,8 @@
+[files]
+extend-exclude = ["*.svg"]
+
+[default.extend-words]
+# Ignore false-positives
+gir = "gir"
+relm = "relm"
+daa84 = "daa84"
diff --git a/_data/crates.json b/_data/crates.json
index cc6afe9b5..1c5d771cd 100644
--- a/_data/crates.json
+++ b/_data/crates.json
@@ -1,38 +1,24 @@
[
{
"section": "Core",
-
"name": "cairo-rs",
- "max_version": "0.14.0",
"repo": "gtk-rs-core"
},
{
"name": "gio",
- "max_version": "0.14.0",
"repo": "gtk-rs-core"
},
{
"name": "glib",
- "max_version": "0.14.0",
"repo": "gtk-rs-core"
},
{
"name": "pango",
- "max_version": "0.14.0",
"repo": "gtk-rs-core"
},
- {
- "section": "GTK 3",
-
- "name": "gtk",
- "max_version": "0.14.0",
- "repo": "gtk3-rs"
- },
{
"section": "GTK 4",
-
"name": "gtk4",
- "max_version": "0.1.0",
"repo": "gtk4-rs"
}
-]
+]
\ No newline at end of file
diff --git a/_data/projects.json b/_data/projects.json
index 510da8c73..0fb82ce26 100644
--- a/_data/projects.json
+++ b/_data/projects.json
@@ -1,4 +1,11 @@
[
+ {
+ "name": "Amberol",
+ "url": "https://gitlab.gnome.org/World/amberol",
+ "app_id": "io.bassi.Amberol",
+ "featured": true,
+ "description": "A small and simple sound and music player that is well integrated with GNOME."
+ },
{
"name": "Authenticator",
"url": "https://gitlab.gnome.org/World/Authenticator",
@@ -6,10 +13,6 @@
"app_id": "com.belmoussaoui.Authenticator",
"description": "Generate Two-Factor Codes."
},
- {
- "name": "Banner Viewer",
- "url": "https://gitlab.gnome.org/World/design/banner-viewer"
- },
{
"name": "Cigale",
"url": "https://github.com/emmanueltouzery/cigale"
@@ -26,10 +29,22 @@
"name": "Cookbook",
"url": "https://github.com/MacKarp/Cookbook"
},
+ {
+ "name": "Celeste",
+ "url": "https://github.com/hwittenborn/celeste",
+ "app_id": "com.hunterwittenborn.Celeste",
+ "description": "Sync your cloud files"
+ },
{
"name": "Czkawka",
"url": "https://github.com/qarmin/czkawka"
},
+ {
+ "name": "Epic Asset Manager",
+ "url": "https://github.com/AchetaGames/Epic-Asset-Manager",
+ "app_id": "io.github.achetagames.epic_asset_manager",
+ "description": "Frontend for Epic Games Store."
+ },
{
"name": "Font Finder",
"url": "https://github.com/mmstick/fontfinder"
@@ -37,10 +52,33 @@
{
"name": "Fractal",
"url": "https://gitlab.gnome.org/GNOME/fractal",
- "featured": true,
"app_id": "org.gnome.Fractal",
"description": "Matrix group messaging app."
},
+ {
+ "name": "Fragments",
+ "url": "https://gitlab.gnome.org/World/Fragments",
+ "app_id": "de.haeckerfelix.Fragments",
+ "description": "An easy to use BitTorrent client."
+ },
+ {
+ "name": "Furtherance",
+ "url": "https://github.com/lakoliu/Furtherance",
+ "app_id": "com.lakoliu.Furtherance",
+ "description": "Track your time without being tracked."
+ },
+ {
+ "name": "Game Of Life",
+ "url": "https://github.com/sixpounder/game-of-life",
+ "app_id": "com.github.sixpounder.GameOfLife",
+ "description": "Play Conway's Game of Life"
+ },
+ {
+ "name": "gerb",
+ "url": "https://github.com/epilys/gerb",
+ "app_id": "com.epilys.gerb",
+ "description": "Font editor and IDE."
+ },
{
"name": "Gfret",
"url": "https://gitlab.com/jeang3nie/gfret"
@@ -61,10 +99,22 @@
"name": "gpsami",
"url": "https://gitlab.gnome.org/hub/gpsami"
},
+ {
+ "name": "GstPipelineStudio",
+ "url": "https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio",
+ "app_id": "org.freedesktop.dabrain34.GstPipelineStudio",
+ "description": "Draw your own GStreamer pipeline"
+ },
{
"name": "gtktranslate",
"url": "https://github.com/skylinecc/gtktranslate"
},
+ {
+ "name": "Helvum",
+ "url": "https://gitlab.freedesktop.org/pipewire/helvum",
+ "app_id": "org.pipewire.Helvum",
+ "description": "A patchbay for PipeWire."
+ },
{
"name": "Icon Library",
"url": "https://gitlab.gnome.org/World/design/icon-library"
@@ -77,6 +127,12 @@
"name": "Image Roll",
"url": "https://github.com/weclaw1/image-roll"
},
+ {
+ "name": "Jogger",
+ "url": "https://codeberg.org/baarkerlounger/jogger",
+ "app_id": "xyz.slothlife.Jogger",
+ "description": "A Fitness Tracker for Gnome Mobile"
+ },
{
"name": "Iridium",
"url": "https://github.com/matze/iridium"
@@ -105,6 +161,11 @@
"name": "noaa-apt",
"url": "https://github.com/martinber/noaa-apt"
},
+ {
+ "name": "Packetry",
+ "url": "https://github.com/greatscottgadgets/packetry",
+ "description": "A fast, intuitive USB 2.0 protocol analysis application"
+ },
{
"name": "pcatk",
"url": "https://github.com/pwil3058/pcatk"
@@ -124,6 +185,11 @@
"name": "Podcasts",
"url": "https://gitlab.gnome.org/World/podcasts"
},
+ {
+ "name": "pod-ui",
+ "url": "https://github.com/arteme/pod-ui",
+ "description": "A modern UI for controlling Line6 POD family of devices via MIDI."
+ },
{
"name": "Popsicle",
"url": "https://github.com/pop-os/popsicle/"
@@ -136,10 +202,29 @@
"name": "Projectpad",
"url": "https://github.com/emmanueltouzery/projectpad2"
},
+ {
+ "name": "Pt",
+ "url": "https://github.com/polachok/pt",
+ "description": "Simple terminal"
+ },
+ {
+ "name": "reel-hub",
+ "url": "https://github.com/ShiNoNeko47/reel_hub"
+ },
{
"name": "relm",
"url": "https://github.com/antoyo/relm"
},
+ {
+ "name": "RRandR",
+ "url": "https://github.com/brofi/rrandr",
+ "app_id": "com.github.brofi.rrandr",
+ "description": "A graphical interface to the RandR X Window System extension."
+ },
+ {
+ "name": "ScreenSelector.so",
+ "url": "https://linkmauve.fr/dev/screen-selector/"
+ },
{
"name": "Shortwave",
"url": "https://gitlab.gnome.org/World/Shortwave",
@@ -151,12 +236,41 @@
"name": "Social",
"url": "https://gitlab.gnome.org/World/Social"
},
+ {
+ "name": "Solanum",
+ "url": "https://gitlab.gnome.org/World/Solanum"
+ },
{
"name": "Tau",
"url": "https://gitlab.gnome.org/World/Tau"
},
+ {
+ "name": "Telegrand",
+ "url": "https://github.com/melix99/telegrand"
+ },
+ {
+ "name": "Tundra",
+ "url": "https://github.com/m4tx/tundra"
+ },
{
"name": "Video Trimmer",
"url": "https://gitlab.gnome.org/YaLTeR/video-trimmer"
+ },
+ {
+ "name": "Warp",
+ "url": "https://gitlab.gnome.org/World/warp",
+ "app_id": "app.drey.Warp",
+ "description": "Fast and secure file transfer"
+ },
+ {
+ "name": "Mission Center",
+ "url": "https://gitlab.com/mission-center-devs/mission-center",
+ "app_id": "io.missioncenter.MissionCenter",
+ "description": "Monitor system resources, apps and services"
+ },
+ {
+ "name": "Mind Hunt",
+ "url": "https://github.com/timcharper/MindHunt",
+ "description": "Graphical Zebra Puzzle Logic Game, similar to Sudoku"
}
]
diff --git a/_includes/anchor_headings.html b/_includes/anchor_headings.html
new file mode 100644
index 000000000..be83180de
--- /dev/null
+++ b/_includes/anchor_headings.html
@@ -0,0 +1,152 @@
+{% capture headingsWorkspace %}
+ {% comment %}
+ Copyright (c) 2018 Vladimir "allejo" Jimenez
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ {% endcomment %}
+ {% comment %}
+ Version 1.0.9
+ https://github.com/allejo/jekyll-anchor-headings
+
+ "Be the pull request you wish to see in the world." ~Ben Balter
+
+ Usage:
+ {% include anchor_headings.html html=content anchorBody="#" %}
+
+ Parameters:
+ * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
+
+ Optional Parameters:
+ * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content
+ * headerAttrs (string) : '' - Any custom HTML attributes that will be added to the heading tag; you may NOT use `id`;
+ the `%heading%` and `%html_id%` placeholders are available
+ * anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `` tag; you may NOT use `href`, `class` or `title`;
+ the `%heading%` and `%html_id%` placeholders are available
+ * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available
+ * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space
+ * anchorTitle (string) : '' - The `title` attribute that will be used for anchors
+ * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored
+ * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored
+ * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content
+ * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content
+
+ Output:
+ The original HTML with the addition of anchors inside of all of the h1-h6 headings.
+ {% endcomment %}
+
+ {% assign minHeader = include.h_min | default: 1 %}
+ {% assign maxHeader = include.h_max | default: 6 %}
+ {% assign beforeHeading = include.beforeHeading %}
+ {% assign nodes = include.html | split: '