Giter VIP home page Giter VIP logo

chimera's Introduction

What is it?

Chimera is a web app for remotely installing non-Steam software to your Linux based couch gaming system. It was primarily developed for ChimeraOS.

Features

  • install games from GOG, Epic Games Store, and Flathub
  • upload ROMs for supported console emulators
  • quick actions
    • adjust audio volume
    • adjust TDP of supported devices
    • load/save emulator state
    • restart steam
    • suspend/reboot/power off
  • built-in FTP server
  • enable SSH access

Installation

On Arch Linux install the chimera package from the AUR. On ChimeraOS the package is pre-installed

After installing the chimera package, you must run the following commands to enable the web interface and then restart your system:

    systemctl --user enable chimera.service
    sudo systemctl enable chimera-proxy.service
    sudo systemctl enable chimera-proxy.socket

To have game patches be applied, you must also run the following command

   systemctl --user enable steam-patch

Usage

Web interface

You can connect to Chimera on ChimeraOS by opening a browser on another computer and entering chimeraos.local:8844. If that does not work, then determine the IP address of your ChimeraOS system by looking at the network settings and enter it directly into your browser along with the port number, for example: 192.168.10.120:8844.

After installing any app, you must restart Steam for the newly installed application or game to appear in the Steam Big Picture UI.

To restart Steam you can open the menu, click on "Actions", then select "Restart Steam".

Command line interface

If you use ChimeraOS or use gamescope-session and have chimera installed, the required commands to apply game tweaks and shortcuts to Steam will run automatically when the Steam session starts.

Otherwise, you will need to run chimera --update and chimera --tweaks while Steam is not running because any changes applied while Steam is running will be overwritten by Steam.

Configuration

For console platforms, Chimera creates shortcuts in Steam which launch each game with RetroArch. The default RetroArch configuration files are located under /usr/share/chimera/config/. You can override the default configuration by creating corresponding files under ~/.config/chimera/.

Screenshots

Library page

Library

Flathub library page

Flathub

Flathub game page

Flathub Game

Actions page

Actions

Feature Details

Non-Steam stores

GOG, Epic, and Flathub applications and games are evaluated for compatibility and assigned a rating of "Unsupported", "Playable", and "Verified", reflecting the Steam Deck ratings. You can contribute to these ratings by submitting a PR against chimera-data or commenting in the compatibility-reports channel on the ChimeraOS Discord.

Install Flathub apps

You can install any application on Flathub by going to Library, then selecting Flathub.

Chimera also looks in ~/.local/share/chimera/banners/flathub/ for a list of additionally allowed Flathub applications. Just add a PNG or JPEG image of size 460x215 or 920x430 with the Flathub app id as the file name under that directory. The Flathub app id can be obtained from the last part of the URL of the Flathub page for the application. For example, the id for Minecraft is com.mojang.Minecraft.

If the application works well please create a new issue with the app id and grid image so it can be added to the set of installable default apps.

Install games from the Epic Games Store

After logging in to your Epic account, you can download and install any of your games from the Epic Games Store.

Games are automatically started with Proton. Not all games will work.

Install games from GOG

After logging in to your GOG account, you can download and install any of your games from GOG.

GOG support currently has a few limitations:

  • No support for Dosbox based games
  • Installation progress is not displayed
  • Games cannot be updated directly

Upload ROMs

You can upload ROMs and banner images to Chimera and they will be added to Steam. The emulators are pre-configured and ready to play out of the box with almost any controller.

The following platforms are currently supported:

  • 32X (requires BIOS file)
  • 3DO (requires BIOS file)
  • Arcade
  • Atari 2600
  • Dreamcast
  • Game Boy
  • Game Boy Advance
  • Game Boy Color
  • GameCube
  • Game Gear
  • Genesis/Mega Drive
  • Jaguar
  • Master System
  • Neo Geo (requires BIOS file)
  • Nintendo
  • Nintendo 64
  • PlayStation (requires BIOS file)
  • PlayStation 2
  • PlayStation Portable
  • Saturn (requires BIOS file)
  • Sega/Mega CD (requires BIOS file)
  • Super Nintendo
  • TurboGrafx-16/PC Engine

More platforms will be added over time.

Supported formats

CD based platforms usually require use of CHD formatted game files, but may also work with ISO files. CHD files can be created easily from cue/bin format using the chdman tool.

BIOS files

BIOS files can be uploaded the same as games. However, the name of the shortcut should reflect the name of the file that the emulator is looking for without the file extension.

Also, select the "Hide" option so the BIOS file is not shown in Steam along with other games.

Command line details

Data updater (chimera --update)

This command updates the compatibility tool, tweaks and patch database from the chimera-data repo.

Steam Compat Tools (chimera --compat)

This command generates stub files for compatibility tools (currently various versions of Proton GE), which are then downloaded automatically when a game that utilizes the tool is first run.

Steam Config (chimera --config)

Configures Steam games according to the automatically downloaded tweaks database, or the local override file if found at ~/.config/steam-tweaks.yaml.

Extends Valve's Steam Play/Proton whitelist, specifying the compatibility tool, launch options and whether Steam Input is enabled on a per-game basis. Many games are already configured to work out of the box, with more being added over time. Please help by testing the games you own and submitting your configurations.

Game tweak entry format

  • compat_tool: the compatibility tool to be used for the specified game, e.g. proton_42, steamlinuxruntime
  • compat_config: the configuration for the compatibility tool specified, e.g. for proton: d9vk, noesync, etc; see the Proton docs for the full list of available options
  • launch_options: the launch options to be used
  • steam_input: a value of enabled will force the use of Steam Input for the specified game

Example entry

"321040":
  compat_tool: proton_411
  compat_config: noesync
  launch_options: MY_VARIABLE=1 %command%
  steam_input: enabled

Each game is specified by its Steam app id. Note that the app id MUST be quoted.

Steam Shortcuts (chimera --shortcuts)

Reads one or more YAML formatted shortcut definition files stored under ~/.local/share/chimera/shortcuts/ and adds the shortcuts to all available Steam accounts.

Single shortcut per file example

name: Firefox                   # name of the shortcut as it will appear in Steam (required)
cmd: firefox                    # the command to execute (required)
dir: /full/path/to/working/dir  # the directory from which to execute the command
params: github.com              # any parameters to invoke the command with
banner: /path/to/image.png      # the horizontal banner image to use (460x215)
poster: /path/to/image.png      # the vertical poster image to use (600x900)
background: /path/to/image.png  # the background/hero image to use (1920x620)
logo: /path/to/image.png        # the logo image to use (overlayed on top of background image)
icon: firefox                   # small icon to show in Steam
compat_tool: proton_411         # use the given compatibility tool, useful for running Windows executables
compat_config: noesync          # use the given compatibility tool options
hidden: false                   # 'false' to show the shortcut in Steam, 'true' to hide it
tags:                           # a list of tags to be assigned to the shortcut in Steam
  - Browser
  - Custom Shortcut

Multiple shortcuts per file example

- name: Firefox
  cmd: firefox
  ...
- name: Chromium
  cmd: chromium
  ...

chimera's People

Contributors

alkazar avatar caccialdo avatar cwalker avatar daddeltrotter avatar eyecreate avatar flexiondotorg avatar kourm avatar lennyhans avatar maddox avatar maweki avatar npaladin2000 avatar pastaq avatar rshamsnejad avatar samsagax avatar sharkwouter avatar ukos-git avatar yellowapple avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar

chimera's Issues

Add NeoGeo as a Platform

As far as I can tell, NeoGeo is supported by retroarch.
Would certainly make a nice addition.

Allthough this might be covered by including Mame as a platform (I think).

Add support for protonfixes

I've noticed some games require some additional protonfixes to run perfectly. Would there be a way to easily add that? Perhaps make that controllable/configurable via steam-buddy?

For example, games such as "Tokyo Xanadu Ex+" or the "Trails in the Sky trilogy" don't play video cutscenes. The rest of the game works perfectly fine, except for the video cutscenes. From what I gather from the protondb, a supposedly simple fix is to install some additional stuff via protonfixes, like xvid and directshow filters.
I tried to install protonfixes manually on gameros, (frzr_unlock, pacman -S protonfixes,....) but I couldn't get protonfixes to work properly. Then again, I've never used protonfixes before, so maybe I'm just doing something wrong.

RPCS3 Support

It might be premature, but I've been working on getting RPCS3 working for PS3 support. Their project has come a long way and seems to be working a lot better now. I am working on a way to launch the emulator in headless mode and directly launch the game.

There are a few uncertainties... to include how RPCS3 inventories the games and where that is stored. If I get some answers to these questions, do you think adding support for PS3 would be possible?

Games not populating in Steam

Dude, I hate to keep doing this to you, but none of the game titles are populating in steam. I add the titles, restart steam and nothing. I even tried installing a few of the flathub programs and nothing is showing up.

Maybe a permissions issue with the steam directory?

Banner not showing

It's not an issue as much as a question... What should I look for when I select a picture for a banner? Is there a guide?

Here is my context... I added many roms to my Steam buddy and all the banners, except one, are showing... I tried selecting different picture arts of different types (png, jpeg), changed the resolution to the same as other banners that works, tried redownloading them, delected the entry and created it anew, after a reboot with a new picture... Nothing works. There is just one banner in the 30+ roms that stubbornly refuses to show. So weird... Why?

Keep doing your awesome work on this GamerOS project. Imo, it's what SteamOS should have been.
#Thumbsup

Add PSP as a platform

  • PSP requires some extra files to work properly
  • Haven't been able to find a game that works yet

Dreamcast emulator requires BIOS

I've been experimenting with the Dreamcast emulator. In the Docs it's not mentioned that the dreamcast emulator needs a bios, but it actually does. Refuses to start otherwise, complaining about missing bios files.

Add Xonotic to allowed Flathub applications

Please, consider adding Xonotic (org.xonotic.Xonotic) to allowed Flathub applications. I did not test this game under GamerOS, but I believe that it should work fine. It is based on SDL2 and has support for gamepads.

By the way, I am the Xonotic Flatpak maintainer, so feel free to let me know if you have any questions. :-)

PS2 libretro core segfaults

The PS2 Libretro core seems to just crash silently. In the dmesg output I saw that it segfaulted.
Does PS2 emulation work for anyone on Gamer OS yet?

[Suggestion] Add some documentation about the individual emulators

Hi, perhaps it wouldn't be a bad idea to include some minimal documentation for the different emulation cores. This could cut down on people submitting issues about for simple questions that they could look up themselves.

Or at the very least, include links to the official site for each core. This could take the guesswork out of trying to find out which core is being used for a particular emulator and people could look up stuff if they have issues or want to customize the emulator.

Manjaro Install Broken

I just did a clean install of Manjaro and installed the latest version of steam-buddy. The new authenticator isn't working properly. As discussed in an earlier issue, I changed the port in the /etc/systemd/system/[email protected] from 80 to 10080 because I also have a web server running on 80 and there is a conflict. It was working on previous versions, but now the authenticator is throwing an internal 500 error after I successfully log in.

[Suggestion] Require authentication

Steam-buddy contains an increasing amount of features which should not be accessible to everyone on the network. A way to mitigate this would be to require users to log in first.

The easiest way we could enable logging in would be to use basic authentication, since it is supported by bottle. I found instructions on how to do that here.

For account management, we could just use the users on the system. I did find a pam library for python which would allow us to do that. Doing so would mean we require a page on which you can change a user's password, but that should be possible with the passwd command.

Add support for retroarch shaders

I've been trying to setup a crt scanline filter in some of the retroarch emulators. Unfortunately it seems the shaders seem to be missing. I've tried copying them over from a backup of a retropie install I had (which ran on the same hardware), but I haven't been able to get them to work. I'm not sure if that's due me not having the directories for the shaders configured properly, or if they need to compiled or something like that.

Anways, long story short. Support for the shaders would be nice, since that allows you to really improve the look of emulated games on modern screens.

Add Nintendo 64 as a platform

I have had difficulty with the retroarch N64 emulator regarding resolution. To get a higher resolution you need to set a specific one, but unlike other games or emulators the N64 emulator does not like it when you have a higher resolution configured than the screen allows, so say, switching between a 4k and 2k screen will cause the emulator to fail.

Steam-buddy runs as root

Running as root should not be the only option. The least we can do is give people other options. My proposal:

  • Create an additional service file which can start steam-buddy as a regular user
  • Detect if the program is run as root or not
  • Run flatpak in user mode when not running as root
  • Start the server on a different port when not running as root
  • Store shortcut and banner file somehwere under the home directory of the user when not running as root

I'll be working on this later.

Port Management

I have installed this through AUR and have enabled it, however, I have other services running on port 80 already. I see the services have port 8844, but when trying to access this from that port, nothing is being displayed. Is there a way to add an option to manage what port steam-buddy is on? Thanks.

Fail to save settings

When ftp is disabled and ftp password is blank, you cannot save changes to settings.

screenshot

Some questions about Emulators in Gamer OS

So far I've only been testing the PS1 module. From what I can tell it uses retroarch, specifically mednafen for the PS1 emulation.

I was wondering, is there any hidden menu inside the emulator where the user can change certain settings, e.g. enable scanlines or different video shaders. Is there a default hotkey for this?

Also, what's the best way to setup multi-disc games? How do you switch between discs when the game prompts you to insert the next disc?

File Manager

Could you install xfm file manager in the next releases?

[Suggestion] Make steam-buddy manage Steam games

Introduction

Kind of obvious, you probably already came up with this idea. I was thinking steam-buddy could be used to install and uninstall steam games and restart steam to apply shortcuts. It could also show your library in a nice overview.

I've done a bit of research into what we'll need to be able to offer this.

Useful files

I've found that the following files contain information we'd need:

  • ~/.steam/steam/userdata/*/config/localconfig.vdf contains all the games the user owns under "Software" -> "Valve" -> "Steam" -> "Apps". It only contains the steam app id, playtime in minutes and when the game was last played.
  • ~/.steam/steam/config/loginusers.vdf contains all the users who have logged in to the system and their account name. This could be useful if we'd want to connect up with any APIs.
  • ~/.steam/registry.vdf contains all currently installed games and if they are currently updating. It will also show games as updating if they are currently being installed. It includes names, but not for everything that is installed.
  • The ~/.steam/steam/config/avatarcache directory contains the avatar of the user, which is a png file.

Missing pieces

The information found in these files is almost enough to show everything we need. The only things missing are names for games and thumbnails. Valve has an API which can gives a list of all application names, which can be found here. For the thumbnails we can probably use the thumbnails from Steam which are already being cached by steam-tweaks.

Controlling Steam

Now the final missing piece is how we could manage Steam. This can be done with by sending commands to steam from the command line as the user which is currently running steam. I found this out by looking at the steamkillall.sh script in SteamOS which makes Steam kill itself (and restart, because lightdm will restart it). We could use this as well:

#!/bin/sh

touch /tmp/hkkillfile
steam steam://hkkillall

Edit: Steam doesn't respond to this script anymore, so instead we now just use the pkill command to stop Steam.

Installing applicaitons can be done in a similar way by running steam steam://install/730 for CS:GO for instance. Uninstalling would be done with steam steam://uninstall/730. In steam big picture mode steam asks no questions when doing this, unlike in desktop mode. Applications can also be started with steam steam://run/730, but this might not be as useful. 730 can of course be replaced by any stream app id.

Closing comments

Sorry if this is a long post. We should probably discuss this before trying to implement it, but I wanted to make sure I had what I found written down somewhere we can use it.

Some N64 games are unplayable due to controller configuration

By default we configured analog sticks to also send dpad events in order to make it possible to play systems like snes or genesis with an analog stick.

However, for some N64 games this interferes with the game since these games use the dpad for in game actions other than movement.

Affected games include Rogue Squadron, GoldenEye 007, Perfect Dark, and Star Wars: Shadows of the Empire.

Increase test coverage

Currently we're running into issues because we are not really testing much and end up making breaking changes without noticing. I think we should be working on improving this. I propose unit tests to be build for the following:

  • Both types of authentication.
  • Changing the settings.
  • All functions which have routes.
  • Tests for all endpoints to check if authentication is asked like expected.

I think this would be most of what would be needed.

Conflict with Graphvix + vala + gnome

Error: no se pudo realizar la operación (archivos en conflicto)
steam-buddy: /usr/bin/gc
ya existe en el sistema de archivos (es parte de graphviz)
"already exists in the filesystem (part of graphviz)"
Ocurrieron errores, por lo que no se actualizaron los paquetes

Also you cannot remove graphiz as there is a conflict with vala and gnome

add ability to record gameplay

Requirements:

  • should be able to start and stop recording
  • should be able to list, play and download recorded videos
  • be able to stream to youtube or twitch

I tested a command-line recording software called byzanz that I thought could be used to implement this feature, but it was unstable and couldn't record more than a few seconds at a time before crashing.

Any other command-line screen recording software available for Linux?

Fix linting errors

Currently flake8 is run every time a commit is made and it finds quite a few issues with the code. It would be good to fix the issues and when this is done make linting errors fail the tests, so we can keep the quality of the code in check more easily in the future.

Idea: Using gameros.local to browse Steam games' folders

Juste an idea... The title says it all.

I know that there's ssh but for those that would like something more user-friendly...

Ex: Just Cause 3 doesn't work with Steam Cloud. I have a backup of my saved games. Originally I tought about a share, like in Recalbox or Retropie, but then I wondered about the possibility of doing something similar with the gameros.local portal to upload my saved games in the right folder.

Could it be possible/a good idea?

Thanks!

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.