diff --git a/docs/development.md b/docs/development.md index 2c71f04..b7cd418 100644 --- a/docs/development.md +++ b/docs/development.md @@ -117,7 +117,6 @@ To experiment without touching your real configuration, set `XDG_CONFIG_HOME` an | `scripts` | Development helpers | | `site` | The public site, on GitHub Pages (see [The website](#the-website)) | | `packaging/polkit` | polkit action of the helper | -| `packaging/aur` | The AUR package (`simrig-bin`), from the release archive | ## Checks @@ -179,15 +178,7 @@ cargo build --release packaging/build-packages.sh 1.2.3 # → dist/packages ``` -### The AUR package - -`packaging/aur` is `simrig-bin`, the AUR package made from a release's `.tar.gz`. It follows stable -releases only, and leaves out `lib/simrig/package-format`, so the app leaves its updates to the -AUR helper. After each stable release: - -```sh -packaging/aur/update.sh 1.2.3 # version, checksum, .SRCINFO (an Arch container without makepkg) -``` - -Then copy `PKGBUILD`, `simrig.install` and `.SRCINFO` into a clone of -`ssh://aur@aur.archlinux.org/simrig-bin.git` (an AUR account with an SSH key), commit and push. +Each release also goes into `packaging/simrig.metainfo.xml` (``, newest first): it is +what software centres and distribution repositories show. Its screenshots are +`docs/images/screenshots`, redrawn by `scripts/site.sh shots`; check it with +`appstreamcli validate --no-net packaging/simrig.metainfo.xml`. diff --git a/docs/images/screenshots/pedals.png b/docs/images/screenshots/pedals.png new file mode 100644 index 0000000..40f9304 Binary files /dev/null and b/docs/images/screenshots/pedals.png differ diff --git a/docs/images/screenshots/rig.png b/docs/images/screenshots/rig.png new file mode 100644 index 0000000..df7d9e3 Binary files /dev/null and b/docs/images/screenshots/rig.png differ diff --git a/docs/images/screenshots/shifter.png b/docs/images/screenshots/shifter.png new file mode 100644 index 0000000..8a80925 Binary files /dev/null and b/docs/images/screenshots/shifter.png differ diff --git a/docs/images/screenshots/wheel-base.png b/docs/images/screenshots/wheel-base.png new file mode 100644 index 0000000..f19b3d8 Binary files /dev/null and b/docs/images/screenshots/wheel-base.png differ diff --git a/packaging/aur/.SRCINFO b/packaging/aur/.SRCINFO deleted file mode 100644 index 6010ab3..0000000 --- a/packaging/aur/.SRCINFO +++ /dev/null @@ -1,23 +0,0 @@ -pkgbase = simrig-bin - pkgdesc = Configure a sim-racing rig of any brand: wheel bases, steering wheels, pedals, shifters, handbrakes - pkgver = 0.1.1 - pkgrel = 1 - url = https://adiakys.github.io/SimRig/ - install = simrig.install - arch = x86_64 - license = GPL-3.0-or-later - depends = polkit - depends = fontconfig - depends = libxkbcommon - optdepends = dkms: build the kernel drivers some devices need (Fanatec, Thrustmaster, Simagic...) - optdepends = base-devel: compiler for the drivers built by DKMS - optdepends = linux-headers: headers for the drivers built by DKMS (or those of your kernel) - optdepends = usb_modeswitch: switch the Logitech G923 and RS50 Xbox editions to PC mode - provides = simrig - conflicts = simrig - options = !strip - options = !debug - source = https://github.com/Adiakys/SimRig/releases/download/v0.1.1/simrig-0.1.1-x86_64-linux.tar.gz - sha256sums = 236fe6e59a76e2ca7a384c6a061e851ef2c316592bc78a8ff66f11d669afc77a - -pkgname = simrig-bin diff --git a/packaging/aur/PKGBUILD b/packaging/aur/PKGBUILD deleted file mode 100644 index e4800db..0000000 --- a/packaging/aur/PKGBUILD +++ /dev/null @@ -1,30 +0,0 @@ -# Maintainer: Adiakys -# -# SimRig from its release archive, for the AUR. Updated by packaging/aur/update.sh at each -# stable release (see docs/development.md). -pkgname=simrig-bin -pkgver=0.1.1 -pkgrel=1 -pkgdesc="Configure a sim-racing rig of any brand: wheel bases, steering wheels, pedals, shifters, handbrakes" -arch=('x86_64') -url="https://adiakys.github.io/SimRig/" -license=('GPL-3.0-or-later') -depends=('polkit' 'fontconfig' 'libxkbcommon') -optdepends=( - 'dkms: build the kernel drivers some devices need (Fanatec, Thrustmaster, Simagic...)' - 'base-devel: compiler for the drivers built by DKMS' - 'linux-headers: headers for the drivers built by DKMS (or those of your kernel)' - 'usb_modeswitch: switch the Logitech G923 and RS50 Xbox editions to PC mode' -) -provides=('simrig') -conflicts=('simrig') -options=('!strip' '!debug') -install=simrig.install -source=("https://github.com/Adiakys/SimRig/releases/download/v${pkgver}/simrig-${pkgver}-${CARCH}-linux.tar.gz") -sha256sums=('236fe6e59a76e2ca7a384c6a061e851ef2c316592bc78a8ff66f11d669afc77a') - -package() { - cp -a "simrig-${pkgver}-${CARCH}-linux/root/." "${pkgdir}/" - # Updates come from the AUR: without this file the app leaves them to the package manager. - rm "${pkgdir}/usr/lib/simrig/package-format" -} diff --git a/packaging/aur/simrig.install b/packaging/aur/simrig.install deleted file mode 100644 index 975d645..0000000 --- a/packaging/aur/simrig.install +++ /dev/null @@ -1,8 +0,0 @@ -# After SimRig is removed, as packaging/postremove.sh says it: the drivers are kept, so the -# devices keep working. -post_remove() { - if [ -x /var/lib/simrig/remove-drivers ]; then - echo "SimRig was removed; the drivers it installed were kept, so your devices keep working." - echo "To remove them too: sudo /var/lib/simrig/remove-drivers --all" - fi -} diff --git a/packaging/aur/update.sh b/packaging/aur/update.sh deleted file mode 100755 index 6bde747..0000000 --- a/packaging/aur/update.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# Points the AUR package at a stable release: its version, the archive's checksum from the -# release's SHA256SUMS, and .SRCINFO (by makepkg, or in an Arch container without it). -# -# packaging/aur/update.sh 1.2.3 -# -# Then publish the two files: copy PKGBUILD, simrig.install and .SRCINFO into a clone of -# ssh://aur@aur.archlinux.org/simrig-bin.git, commit and push. -set -eu -here=$(cd "$(dirname "$0")" && pwd) -version="${1:?usage: $0 VERSION}" -case "$version" in -*-*) echo "$version is a pre-release: the AUR package follows stable releases" >&2; exit 1 ;; -esac - -archive="simrig-$version-x86_64-linux.tar.gz" -sum=$(curl -sSfL "https://github.com/Adiakys/SimRig/releases/download/v$version/SHA256SUMS" | - awk -v f="$archive" '$2 == f { print $1 }') -[ -n "$sum" ] || { echo "$archive not in the release v$version" >&2; exit 1; } - -sed -i -e "s/^pkgver=.*/pkgver=$version/" -e "s/^pkgrel=.*/pkgrel=1/" \ - -e "s/^sha256sums=.*/sha256sums=('$sum')/" "$here/PKGBUILD" - -if command -v makepkg >/dev/null; then - (cd "$here" && makepkg --printsrcinfo > .SRCINFO) -else - docker run --rm -v "$here:/pkg:ro" archlinux:latest sh -c \ - 'useradd -m b && cp -r /pkg /tmp/p && chown -R b /tmp/p && cd /tmp/p && su b -c "makepkg --printsrcinfo"' \ - > "$here/.SRCINFO" -fi -echo "PKGBUILD and .SRCINFO at $version" diff --git a/packaging/simrig.metainfo.xml b/packaging/simrig.metainfo.xml new file mode 100644 index 0000000..e4a2600 --- /dev/null +++ b/packaging/simrig.metainfo.xml @@ -0,0 +1,145 @@ + + + + io.github.adiakys.SimRig + CC0-1.0 + GPL-3.0-or-later + + SimRig + Set up a sim-racing rig of any brand + + Adiakys + + + +

+ SimRig sets up a whole sim-racing rig on Linux: wheel base, steering wheel, pedals, shifter + and handbrake, whatever the brand. It installs the drivers the devices need, shows every + device moving live, tunes and calibrates them and keeps presets, then steps aside: the + devices keep working in every game with SimRig closed. +

+
    +
  • Fanatec, Moza, Logitech, Thrustmaster, PXN, Simagic and standard force feedback bases
  • +
  • Any USB shifter or handbrake, set up by moving it
  • +
  • Drivers installed with one password, kept after kernel updates
  • +
  • Rotation, force feedback and each brand's own settings, saved in the device
  • +
  • What a device cannot do stays visible, with the reason
  • +
  • Checks what games need from each device, and says how to fix it
  • +
+
+ + simrig.desktop + + simrig + simrig-cli + + + https://adiakys.github.io/SimRig/ + https://github.com/Adiakys/SimRig/issues + https://adiakys.github.io/SimRig/faq/ + https://github.com/Adiakys/SimRig + https://github.com/Adiakys/SimRig/discussions/1 + + + Settings + HardwareSettings + Game + + + sim racing + racing wheel + steering wheel + force feedback + pedals + shifter + handbrake + Fanatec + Moza + Logitech + Thrustmaster + PXN + Simagic + + + + + The rig, live: every device drawn as it stands and moving as it is used + https://raw.githubusercontent.com/Adiakys/SimRig/main/docs/images/screenshots/rig.png + + + A wheel base: rotation, force feedback and its own settings + https://raw.githubusercontent.com/Adiakys/SimRig/main/docs/images/screenshots/wheel-base.png + + + Pedals: response curve, dead zones and maximum force + https://raw.githubusercontent.com/Adiakys/SimRig/main/docs/images/screenshots/pedals.png + + + A shifter: its gate, gears and reverse + https://raw.githubusercontent.com/Adiakys/SimRig/main/docs/images/screenshots/shifter.png + + + + + #f3c726 + #efc63a + + + + 1280 + + + pointing + keyboard + + + + + + + https://github.com/Adiakys/SimRig/releases/tag/v0.3.1 + +

SimRig shows up in software centres, with its description, screenshots and release notes.

+
+
+ + https://github.com/Adiakys/SimRig/releases/tag/v0.3.0 + +
    +
  • Add a device shows the plugin of each device, with Change to pick another one
  • +
  • An unlisted model of a known maker is offered that maker's plugin first
  • +
  • Any device no plugin handles can be given to a plugin by hand
  • +
  • When a plugin does not take a device, the reason shows under its row
  • +
+
+
+ + https://github.com/Adiakys/SimRig/releases/tag/v0.2.0 + +

Moza, confirmed on real hardware with an R21 Ultra base, a CS Pro wheel, CRP2 pedals, the HBP handbrake and the SGP shifter.

+
    +
  • The steering wheel on a Moza base, with its buttons, paddles and settings
  • +
  • Shifters and handbrake plugged into a Moza base show up on their own
  • +
  • The SGP sequential shifter on its own USB, with its extra buttons
  • +
  • Mapping by hand stays available for any device that responds wrong
  • +
+
+
+ + https://github.com/Adiakys/SimRig/releases/tag/v0.1.1 + +
    +
  • The PXN VD4 is recognised
  • +
  • A USB device no plugin knows can be given to a plugin
  • +
+
+
+ + https://github.com/Adiakys/SimRig/releases/tag/v0.1.0 + +

The first release: a whole sim-racing rig set up on Linux, with the drivers its devices need.

+
+
+
+
diff --git a/packaging/stage.sh b/packaging/stage.sh index 3ccda30..45048ac 100755 --- a/packaging/stage.sh +++ b/packaging/stage.sh @@ -6,7 +6,7 @@ # # Layout: /usr/bin (app, CLI), /usr/libexec/simrig (helper and updater, run through pkexec), # /usr/lib/simrig/plugins (official plugins with their drivers), polkit actions, desktop entry, -# icon, documentation and licenses. The packages and the archive add +# AppStream metadata, icon, documentation and licenses. The packages and the archive add # /usr/lib/simrig/package-format, which tells the app which file of a release updates it. set -eu root=$(cd "$(dirname "$0")/.." && pwd) @@ -33,6 +33,8 @@ for policy in org.simrig.helper org.simrig.update; do "$dest/usr/share/polkit-1/actions/$policy.policy" done install -D -m 0644 "$root/packaging/simrig.desktop" "$dest/usr/share/applications/simrig.desktop" +install -D -m 0644 "$root/packaging/simrig.metainfo.xml" \ + "$dest/usr/share/metainfo/io.github.adiakys.SimRig.metainfo.xml" install -D -m 0644 "$root/crates/simrig-gui/ui/icons/mark.svg" \ "$dest/usr/share/icons/hicolor/scalable/apps/simrig.svg" diff --git a/scripts/site.sh b/scripts/site.sh index 8cf3c07..ad26f93 100755 --- a/scripts/site.sh +++ b/scripts/site.sh @@ -4,7 +4,8 @@ # scripts/site.sh stage copy the shared assets (fonts, the mark, device drawings) into site/ # scripts/site.sh build stage, then build into target/site as GitHub Pages does (Docker) # scripts/site.sh serve build, then serve it at http://localhost:4000/SimRig/ -# scripts/site.sh shots redraw the app's screenshots and the demo video (Pillow, ffmpeg) +# scripts/site.sh shots redraw the app's screenshots (site, software centres) and the demo +# video (Pillow, ffmpeg) # scripts/site.sh social redraw the preview image (search results, link previews) from # site/_social/card.html, in three formats (Chromium) set -euo pipefail @@ -64,6 +65,12 @@ for name in ("home", "base", "pedals", "shifter"): Image.open(f"{src}/{name}-{theme}.png").convert("RGB").save( f"{out}/{name}-{theme}.webp", quality=88, method=6) +# The software centres' screenshots (packaging/simrig.metainfo.xml): PNG, light theme. +import os +os.makedirs("docs/images/screenshots", exist_ok=True) +for name, file in (("home", "rig"), ("base", "wheel-base"), ("pedals", "pedals"), ("shifter", "shifter")): + Image.open(f"{src}/{name}-light.png").convert("RGB").save(f"docs/images/screenshots/{file}.png", optimize=True) + # The mark (crates/simrig-gui/ui/icons/mark.svg) as a PNG, for search engines' logos. s = 512 / 22 mark = Image.new("RGBA", (512, 512), (0, 0, 0, 0)) @@ -114,7 +121,7 @@ case "${1:-}" in shots) shots ;; social) social ;; *) - sed -n '2,9p' "$0" | sed 's/^# \{0,1\}//' + sed -n '2,10p' "$0" | sed 's/^# \{0,1\}//' exit 1 ;; esac diff --git a/site/_brands/moza-linux.md b/site/_brands/moza-linux.md index afe595c..4fcefd7 100644 --- a/site/_brands/moza-linux.md +++ b/site/_brands/moza-linux.md @@ -3,16 +3,16 @@ title: Moza wheel bases, pedals and shifters on Linux nav: Moza order: 2 status: partial -tested: CRP2 pedals (live inputs) -summary: Wheel bases R3 to R21, SR-P and CRP pedals, HBP handbrake, SGP and HGP shifters +tested: an R21 Ultra base, a CS Pro steering wheel, CRP2 pedals, an HBP handbrake and an SGP shifter +summary: Wheel bases R3 to R21 and the steering wheel on them, SR-P and CRP pedals, HBP handbrake, SGP and HGP shifters description: >- Use a Moza R3, R5, R9, R12, R16 or R21 wheel base on Linux with force feedback and base - settings, plus SR-P and CRP pedals, the HBP handbrake and the SGP and HGP shifters. SimRig sets - them up and builds the force feedback driver on kernels older than 6.15. + settings, the steering wheel on it with its buttons and settings, SR-P and CRP pedals, the HBP + handbrake and the SGP and HGP shifters. Tested on an R21 Ultra and a CS Pro wheel. lede: >- - Moza bases on Linux with their force feedback and settings, next to Moza pedals, handbrake and - shifters, in one rig. -card: { label: "Wheel base", art: [base.svg], driver: "hid-universal-pidff, in Linux from 6.15", tested: "CRP2 pedals" } + Moza bases on Linux with their force feedback and settings, the steering wheel on them, and + Moza pedals, handbrake and shifters, in one rig. +card: { label: "Wheel base", art: [base.svg], driver: "hid-universal-pidff, in Linux from 6.15", tested: "R21 Ultra, CS Pro, CRP2, HBP, SGP" } --- ## Models @@ -20,6 +20,7 @@ card: { label: "Wheel base", art: [base.svg], driver: "hid-universal-pidff, in L | Type | Models | |---|---| | Wheel bases | R3, R5, R9, R12, R16, R21 | +| Steering wheels | The wheel mounted on the base, CS Pro tested | | Pedals | Pedals plugged into the base; SR-P and CRP pedals on their own USB | | Handbrake | HBP | | Shifters | SGP sequential, HGP H-pattern, on their own USB or plugged into the base | @@ -50,19 +51,29 @@ The base stores what it is sent, so settings come back with the base, with SimRi serial protocol comes from [Boxflat](https://github.com/Lawstorant/boxflat), credited in SimRig's third-party notices. +## The steering wheel + +The wheel mounted on the base shows up with its buttons, hat switches and analog paddles, live, +and its settings: + +- **Analog paddle mode**: buttons, a combined axis, or separate axes, with the **combined axis + split** (the clutch point). +- **LED brightness** for the RPM lights, and **button LED brightness**. +- **Stick as directional pad**, and each **rotary encoder** as buttons or a knob. + ## Pedals, handbrake and shifters - **Pedals** on the base and SR-P and CRP pedals are recognized with their layout; mapping them by hand is offered too. - **HBP handbrake**: its position, live. -- **SGP sequential shifter** and **HGP H-pattern shifter** on their own USB are recognized. An - HGP plugged into the base appears by itself once a gear is engaged; an SGP plugged into the - base is set up by moving it. If the shifter's direction was reversed in its settings, map it - by hand. +- **SGP sequential shifter** and **HGP H-pattern shifter**, on their own USB or plugged into the + base. Plugged into the base, they and the HBP show up by themselves within a second or two, and + go when unplugged. The SGP brings its extra buttons, and its up and down follow its direction + setting. +- Mapping by hand stays on offer for any of them that responds wrong. ## Limits -- The settings of Moza steering wheels (the rims) are not offered yet. - Pedal calibration, dead zones and curves are not available through SimRig yet. - **Reset settings** is not available. diff --git a/site/_data/models.yml b/site/_data/models.yml index 8e6b8df..c572d1a 100644 --- a/site/_data/models.yml +++ b/site/_data/models.yml @@ -13,10 +13,11 @@ - page: moza-linux name: Moza rows: - - { name: "CRP2 pedals", tested: true } - - { name: "R3, R5, R9, R12, R16 and R21 bases" } - - { name: "SR-P and CRP pedals, HBP handbrake" } - - { name: "SGP and HGP shifters" } + - { name: "R21 Ultra base", tested: true } + - { name: "CS Pro steering wheel", tested: true } + - { name: "CRP2 pedals, HBP handbrake, SGP shifter", tested: true } + - { name: "R3, R5, R9, R12 and R16 bases" } + - { name: "SR-P pedals, HGP shifter" } - page: logitech-linux name: Logitech rows: diff --git a/site/alternatives.md b/site/alternatives.md index 0ad6a0a..8b35e15 100644 --- a/site/alternatives.md +++ b/site/alternatives.md @@ -15,7 +15,7 @@ lede: >- | Brands | Fanatec, Moza, Logitech, Thrustmaster, PXN, Simagic, standard force feedback bases, any USB shifter or handbrake | Logitech, Thrustmaster, Fanatec (with their drivers) | Moza | PXN VD series | | Installs the drivers | Yes, with one password | No | No (not needed on Linux 6.15 and later) | No | | Several brands in one rig | Yes, with presets for the whole rig | One wheel at a time | Moza devices | One base | -| Brand's own settings | Moza bases, PXN VD bases, Fanatec tuning menu, Simagic bases | What the kernel driver offers | The whole Moza range, wheels and dashboards included | The whole VD base, pedal curves, lights, button map | +| Brand's own settings | Moza bases and wheels, PXN VD bases, Fanatec tuning menu, Simagic bases | What the kernel driver offers | The whole Moza range, wheels and dashboards included | The whole VD base, pedal curves, lights, button map | {: .table-scroll} ## Oversteer @@ -35,9 +35,10 @@ rig mixes devices and brands. on Linux: base, wheels, pedals, shifters, handbrake, dashboard and more. SimRig's Moza plugin speaks the serial protocol that Boxflat worked out, and credits it. -**Choose Boxflat** for the settings of Moza wheels and dashboards, which SimRig does not offer -yet. **Choose SimRig** when the Moza devices share the rig with other brands, or on a kernel -older than 6.15, where SimRig builds the force feedback driver for you. +**Choose Boxflat** for Moza dashboards, hubs and the finer settings of the wheels (their +lights' colours, for one), which SimRig does not offer yet. **Choose SimRig** when the Moza +devices share the rig with other brands, or on a kernel older than 6.15, where SimRig builds the +force feedback driver for you. ## Pitwall diff --git a/site/assets/images/base-dark.webp b/site/assets/images/base-dark.webp index c639ced..e9a4ca7 100644 Binary files a/site/assets/images/base-dark.webp and b/site/assets/images/base-dark.webp differ diff --git a/site/assets/images/base-light.webp b/site/assets/images/base-light.webp index a079833..338e3a5 100644 Binary files a/site/assets/images/base-light.webp and b/site/assets/images/base-light.webp differ diff --git a/site/assets/images/home-dark.webp b/site/assets/images/home-dark.webp index 3b912b1..5674cb5 100644 Binary files a/site/assets/images/home-dark.webp and b/site/assets/images/home-dark.webp differ diff --git a/site/assets/images/home-light.webp b/site/assets/images/home-light.webp index 30726b6..1cf7ac1 100644 Binary files a/site/assets/images/home-light.webp and b/site/assets/images/home-light.webp differ diff --git a/site/assets/images/pedals-dark.webp b/site/assets/images/pedals-dark.webp index d341dab..d1755f7 100644 Binary files a/site/assets/images/pedals-dark.webp and b/site/assets/images/pedals-dark.webp differ diff --git a/site/assets/images/pedals-light.webp b/site/assets/images/pedals-light.webp index 8d47b21..eb247e8 100644 Binary files a/site/assets/images/pedals-light.webp and b/site/assets/images/pedals-light.webp differ