Coder Social home page Coder Social logo

luanroger / xbox_launcher Goto Github PK

View Code? Open in Web Editor NEW
22.0 5.0 8.0 4.33 MB

Launcher with the Xbox Series X/S's dashboard to play Xbox Cloud Gaming (XCloud) games.

License: BSD 3-Clause "New" or "Revised" License

Dart 85.41% CMake 3.49% C++ 6.44% C 0.27% Python 4.39%
cloud-gaming fluent-ui flutter games launcher python selenium xbox xbox-series-x xcloud

xbox_launcher's Introduction

xbox_launcher

Launcher with the Xbox Series X/S's dashboard to play Xbox Cloud Gaming (XCloud) games.

fluent_desing license issues releases Discuss on GitHub

๐Ÿšง The project is current in development (Alpha phase) so it can be unstable and occurs errors commonly. ๐Ÿšง

Features

  • Play Xbox Cloud Gaming (XCloud) directly from the launcher;
  • Change the background from Home to a image, gif or solid color;
  • Change the accent color;
  • Create a profile, with your own cofiguration sets;
  • Modify a existing profile with a new avatar or name;
  • Set a image or gif as avatar image;
  • Change the xbox.com/play region easely in the configurations;
  • Fullscreen support;

Dependencies

Setup

Pre-requires

The Python 3.10, Microsoft Edge WebDriver and Selenium is required to get the games from xbox.com/play, but you can use xcloud_games.json that have some games on it. This file is not updated regularly, so some games that are on Xbox Cloud Gaming may not be there.

1. Get the games

Go to .\tools\xcloud_game_picker\ and execute the file xcloud_game_picker.py:

python .\xcloud_game_picker.py

and the Selenium will start to get the games, is important that you dont use the opened browser while dont finish.

2. Runing xbox_launcher

Go to root of the project and run on terminal:

flutter run --release

For now, not exist binaries or installers to use, so you need to build on its own.

3. Configuring

On xbox_launcher's Home page go to My Games > Apps > Configurations > Cloud gaming in the JSON file path field you paste the path to your xcloud_games.json file and confirm the changes.

Screenshots

home_page Home Page.

profile_selector Profile Selector.

Contribute

The project is in Alpha phase, therefore it is important that you consider contributing to the project in your spare time. Open an issue, pull request or engage in discussions to make the project better.

We are always needing help to:

  • See the open issues.
  • We still don't have a logo or visual identity.
  • Improve the design of pages or widgets.
  • Improve the code architecture.
  • Improve performance and decrease memory consumption (memory leak).

For more info check the Contribuition Guideline.

Contribute to used packages

This project uses first-party and third-party open-source packages, so consider contributing to those as well.

Go to dependencies.

xbox_launcher's People

Contributors

luanroger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

xbox_launcher's Issues

Create splash-screen to apps

Motivation

On Xbox, when enter in a app or game, a splash-screen is brevely showned.

Implementation

Not every app have a splash-screen by default, just the games, so is considered to automatcly create for system apps.

Remarks

In the future is internaly planed to create a kind of API to anyone create apps for the launcher, but this idea is in validation.
In this is issue is related with the fact that each app on the planed API will implement a splash-screen.

Focus Element system

This system will be used to get the last valid focused element.
The focused element can store an Object value.

The valid element just need to be focable, but not all element need to update the object.
This value need to have a timeout to be cleared.

Motivation

The stored value will use to get the games information to be used in context menu on My Games section.

TODO

Fix minor bugs

Known bugs

  • Back twice in one page ahead of HomePage show a black screen.
  • You can press select in GamePage and shows the game options menu, this can't happen.

Redesing the keyboard

keyboard_desing

Update the keyboard's desing.

  • Change icons.
  • Remove current black background.

Currently, it is not possible to suggest or correct words.

Add localization

All strings are hard coded. So it's need to change this when implement the localization.

The default language is the English, and all the other languagues will start from there.
To garantee the quality of the translation is required a contribuitor that have fluency on the language that will be translated.

Checklist

  • Implement the package localization.
  • Replace all hard-coded string by the localization string placeholder.
  • Search for contributors that interesting to contribute with more languages.

Shortcuts support

Create shortcuts in the pages and shows it in bottom right corner.

Not all pages will support it.

quick-actions-xbox
Original implementation.

Create a controller to get the recently added games to Game Pass

Use HTTP request to get the recently added games to Game Pass in Recently Added page.

Requirements

  • The script will get the page's HTML and from there get the name of the game.
  • Store the game's name in cache.
  • Use the current xcloud_games.json file to show the game information.

All this process will be made on time per day to update the cached games.

Motivations

  • Show the Recently Added games in the Games&Apps page.
  • Show the games in the future home dashboard. #8

TODO

  • Create script in tools to get the recently added games.
  • Made the script be rocoganized by the xbox_launcher.

To show the games is nescessary to have the #8 ready, So the issued can be clossed when the TODOs has been solved.

Create a Context Menu to exit the program

Motivation

For now is not possible to exit the launcher normaly unless forcing the process to stop, so it's to create a more simple way to exit the launcher using the Context Menus

Implement Flutter Hooks

Motivation

The flutter_hooks with the migration to Riverpod (#33) will help to manage the lifecicle of the widgets, mainly of the pages widgets, that for now, is hard to manage the shortcuts for this pages.

Add badge in games tiles

games_badge

Planed badges

  • Game Pass badge.
  • Supported controllers.
  • Game genre.

The badges will be optional and can be toggled in configurations.

This implementation depends of #3 for the extra game infos.

Create configuration file for the system

Motivation

The configuration file belongs to user, so each user have you own configuration preferences, but some parameters dont need to user-depend.
For separation conserns, it will be created a configuration file that will the shared for all profiles and it will belong to system.

System configuration

This is the list of parameter that will belong to the system:

  • preferedServer
  • xcloudGamesJsonPath

This list can change at time

Create Splash Screen

Motivation

This is a frendely way to show the load progress and made the launcher opening more interactive.

Description

Is not know a desing for the splash screen, but will be made a experimental implementation soon.

Change shortcuts on runtime

The shortcut changing has been implemented in e2633cd

Requirements

Where change

  • Update shortcut when focus in a game in My library to access the context menu removed temporarily in b3f1526

Create Games&Apps groups

Implement games and apps groups. For this feature is required to have the shortcuts implemented.

  • Use shortcuts to create groups.
  • Use shortcuts to add games or apps to groups.
  • Is not possible to have two identical app or game in a group.

The groups can be managed in the "Groups" section in My Library.

Manage groups

The group name will be clickable, and this will be used to manage the group.
Using a ContextMenu this actions need to be available:

  • Rename groups.
  • Reorder groups.
  • Delete group.

Show the storage usage in Manage section

storage_example

  • Show all disks.
  • Use a scrollable Row.
  • Show the percentage inside the progress ring.
  • Show the volume root path.

Motivation

This will be useful when the external games is implemented.

Requirements

This feature needs to get the system information and for that the sys_info_package is being created.

  • Progress: #21

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.