GameLAB is part of the Playtron ecosystem and lets users configure games to get the best experience possible. Custom game configurations can then be shared with and benefit the whole Playtron community.
Packages for all major systems are available on our Github release page
https://github.com/playtron-os/playtron-labs/releases/
We provide installers for Linux, Mac and Windows in different formats. Download and install the appropriate package for your platform.
Before you can use GameLAB, you'll need a device running Playtron GameOS. Make sure your Playtron device authorizes remote access and note its IP address.
Then open the GameLAB application on your computer. You should see a greeting screen asking you to connect to a device. Enter the IP address of the Playtron device and click Connect.
Once connected to a Playtron device, you'll have access to your game library where you can install and run games. GameLAB also lets you create and select custom launch and input configurations.
All technologies used are listed in the Dependencies.MD file, here are the most important ones used by this project:
- Tauri - https://tauri.app/
- Vite - https://vitejs.dev/
- ReactJS - https://react.dev/
- Lingui - https://lingui.dev
- Typescript - https://www.typescriptlang.org/
The app has two processes, the UI which is compiled and served using vite, and the main process that communicates with the OS native layer to launch the app using the Tauri rust backend.
UI: ./src
Backend: ./src-tauri
To compile this tauri app on Fedora you'll need to install the following packages:
sudo dnf check-update
sudo dnf install webkit2gtk4.1-devel \
openssl-devel \
curl \
wget \
file \
libappindicator-gtk3-devel \
librsvg2-devel
sudo dnf group install "C Development Tools and Libraries"
See the Tauri documentation if you’re not using Fedora.
Install the NPM dependencies as well:
pnpm install
To start GameLAB from the development environment, run:
pnpm start
Please read the guidelines document when contributing to the project.
This project has lingui setup for translations.
With lingui we can use the t or Trans macros from @lingui/macro to generate translation keys on the go, without having to manually define a translation file.
When adding text to the app please wrap it in one of these macros to make it ready for i18n:
import { t } from "@lingui/macro";
export default function TestComponent() {
return <div>{t`My internationalized text`}</div>;
}
The t macro can also be used outside React components.
With Trans:
import { Trans } from "@lingui/macro"
export default function TestComponent() {
return (
<div>
<Trans>`My internationalized text`</Trans>
</div>;
);
}
After that you can run pnpm translations:extract to automatically generate translations keys for all locales (this will be added to the locale messages.po file). The generated .po file is ready for translators to work with, being supported by most translation tools used by translations.
The .po files are automatically compiled by vite during the build, and are loaded dynamically: see https://lingui.dev/guides/dynamic-loading-catalogs
With the basic information above you should already be able to use this i18n library, more information can be found here: Lingui React Patterns.
The pipeline in this repo will automatically build and upload the installers to the github releases once code is merged to the release branch.
To change the version of the release, please update package.json
In the project directory, you can run:
Runs the app in the development mode.
All this command does is run tauri dev
Command used by Tauri to start Vite dev server when running tauri dev
Command used by Tauri to build code with Vite when running tauri build
Access the Tauri cli commands. To see a list of available commands run pnpm tauri help
Launches the test runner to run tests. https://jestjs.io/docs/tutorial-react
Launches the test runner to run tests in watch mode. https://jestjs.io/docs/tutorial-react
Launches the test runner to run tests and produces a coverage report.
Lints the project and reports on the warnings/errors found. For more information, see eslint.
Starts a CLI helper to generate components.
Update catalogs with new messages.
For more information, see lingui

