RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Announcing Pegasus Frontend

    Scheduled Pinned Locked Moved Ideas and Development
    frontendpegasusc++developmentqml
    1.7k Posts 145 Posters 5.1m Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • fluffypillowF
      fluffypillow
      last edited by

      A wild weekly update (+recap) appears!

      • Breaking Changes in the Theme API: renamed collectionList to collections and gameList to games
        • in practice, this means you'll need to update (ie. redownload) the themes; sorry for the inconvenience!
      • Opening the main menu now has its own key (other than just hitting Back until you reach it). Defaults to F1 and Gamepad Start.
      • Theme API: Arrow keys can now be queried like the rest of the keys with isLeft, left, isUp, etc.
      • Fixed themes appearing multiple times on the list in some cases
      • Updated the documentation
      • Created the ES2 Simple theme
      • Created the 9999999-in-1 theme
      C 1 Reply Last reply Reply Quote 4
      • C
        Cybrasty @fluffypillow
        last edited by Cybrasty

        @fluffypillow Pegasus looks really promising, is it named after the Polish Famiclone by any chance?

        I am looking for an alternative to EmulationStation because it is lacking few features for my Pi inside Commodore 64 project. Before I abandon ES2 for Pegasus, I have a few questions about current (or even planned) features...

        • What does it run on, is it X11, sdl?
        • Can you map key-combos (e.g. Shift + Down arrow) to a function (up in menu)?
        • Can you have multiple controllers per player setup at the same time (e.g 2 usb gamepads and a keyboard controlling a single player at the same time)
        • Can the menu be navigated by each player, even if both players are mapped to the same keyboard?
        fluffypillowF 1 Reply Last reply Reply Quote 0
        • fluffypillowF
          fluffypillow @Cybrasty
          last edited by

          @cybrasty

          is it named after the Polish Famiclone by any chance?

          Yup :) I happened to have one when I was younger.

          What does it run on, is it X11, sdl?

          It uses Qt, which I've built to use EGL on the Raspberry Pi, ie. X11 is not required, it can run with or without it. Other than that there are releases for desktop Linux (X11), Windows and Android, but it can also be build for macOS, Odroid and other boards.

          Can you map key-combos (e.g. Shift + Down arrow) to a function (up in menu)?

          Not yet, only single keys.

          Can you have multiple controllers per player setup at the same time (e.g 2 usb gamepads and a keyboard controlling a single player at the same time)
          Can the menu be navigated by each player, even if both players are mapped to the same keyboard?

          All connected keyboards, gamepads, mouses and touchscreens can control the menu. As for the emulators, the key configuration is not integrated with the rest of RetroPie (eg. RetroArch) yet (I should make a patch for that eventually).

          C 1 Reply Last reply Reply Quote 1
          • C
            Cybrasty @fluffypillow
            last edited by

            @fluffypillow said in Announcing Pegasus Frontend:

            It uses Qt, which I've built to use EGL on the Raspberry Pi, ie. X11 is not required, it can run with or without it. Other than that there are releases for desktop Linux (X11), Windows and Android, but it can also be build for macOS, Odroid and other boards.

            Any idea what keyboard tables Qt ueses? My current problem when it comes to ES2 is that it doesn't seem to read my modified linux tables so I can use my C64 keyboard correctly (which requires Shift + Down for Up and Shift + Right for Left among others).

            fluffypillowF 1 Reply Last reply Reply Quote 0
            • fluffypillowF
              fluffypillow @Cybrasty
              last edited by

              @cybrasty Never tried that personally, but apparently you can load custom X11 keymaps and kmap files to use.

              C 1 Reply Last reply Reply Quote 0
              • C
                Cybrasty @fluffypillow
                last edited by Cybrasty

                @fluffypillow I have made myself a custom keymap that works both in X and console, it just doesn't register in ES2 because it runs off SDL keymap (I think) which I can't find. Or the way ES2 is written it doesn't recognize Shift as a modifier that changes input.

                This is why I asked about key combos, because even if Pegasus won't use my keymap, I can always fake it ;)

                Just to confirm that my custom tables of Shift+key are not read in Pegasus either.
                I would like to request shifted/modded key support. It would be helpful in my case, and would also allow for shortcuts like Shift/Alt F1 to reboot or close the front end.

                fluffypillowF 1 Reply Last reply Reply Quote 0
                • fluffypillowF
                  fluffypillow @Cybrasty
                  last edited by

                  @cybrasty tested this on my Pi too, and the loadkey method indeed fails. In theory converting the kmap to qmap could make it work, but compiling the converted tool is a pain.. I think I can add key combinations support however, I'll do some experiments to see if I can make it work.

                  C 1 Reply Last reply Reply Quote 1
                  • C
                    Cybrasty @fluffypillow
                    last edited by

                    @fluffypillow Thanks! I am looking forward to it :)

                    I think the big issue here is how fractured linux keyboard is. There is one driver for X, another for console, and bunch of other library specific drivers that do or do not follow whatever the distro tells them to do with custom keybindings. So even when changing everything that I could in rasbian, it still isn't enough.

                    Having multi-key in Pegasus will save me a lot of hassle of trying to build my own keyboard controller.

                    1 Reply Last reply Reply Quote 0
                    • DarksaviorD
                      Darksavior
                      last edited by Darksavior

                      @fluffypillow I'm in the middle of sorting arcade games and threw them all in the .../roms/arcade/fba/ and .../roms/arcade/mame-libretro folders and screenshots and logos aren't showing up. The box art does show up since that's dependent on the gamelist.xml. Putting games in .../roms/arcade/ also doesn't make the screenshots/logo art show. This is odd because my custom system folders have no issues.

                      All of my scraped arcade art is in /opt/retropie/configs/all/emulationstation/downloaded_images/arcade.
                      The same screenshot and logo art will show up if I put it in .../downloaded_images/fba/ or .../downloaded_images/mame-libretro/ but I'd need to put games in the ...roms/fba and ...roms/mame-libretro/ rom folders again. This verifies the art is good.

                      Also, will you be providing a non-internal version of the default theme? I wish to add/replace some of the system logos. I already did that to the simple theme. While the simple theme has bugs displaying some system logos, replacing the .svg does work.

                      Also, this overlapping box art bug has existed for the longest but wonder if anything can be done. Going to the next or previous system and then back to this one causes it and fixes it.
                      This is build alpha9-55-gfb13c3d. 2018-10-08
                      0_1539315644205_IMG_0101.JPG
                      0_1539315676006_IMG_0102.JPG

                      fluffypillowF 1 Reply Last reply Reply Quote 0
                      • fluffypillowF
                        fluffypillow @Darksavior
                        last edited by

                        @Darksavior this is partly a bug and also an interesting case. When looking for assets, it was assumed that the games were stored as /path/to/<systemname>/game, and assets as /path/to/downloaded_images/<systemname>/game. The bug is that the case when the <systemname> part in these two differs was not handled, I'll fix it. Other than that, assets for system x are always searched under downloaded_images/x/, as it cannot be guessed that they should be searched in some other directory.

                        Also, will you be providing a non-internal version of the default theme?

                        Yes, I'll likely move it into a separate repo, for license reasons too (ie. no company logos in the main repo).

                        Also, this overlapping box art bug has existed for the longest but wonder if anything can be done.

                        Yeah, the main theme would need some love too. It will be fixed, along with the portrait/landscape ugliness eventually.

                        1 Reply Last reply Reply Quote 1
                        • fluffypillowF
                          fluffypillow
                          last edited by

                          As for this week's update, there have been a bunch of bugfixes:

                          • Fixed console apps not reacting to keyboard input (eg. Retropie menu)
                          • Fixed after-process scripts called too soon
                          • Fixed an issue where changing the theme didn't work after a theme loading error
                          • Fixed asset searching in ES2's downloaded_images when the name of the game directory didn't match the system name
                          • Fixed the data source settings panel not reacting properly to keyboard input

                          Key combination support is in the works, it seems I can add support for it.
                          Also updated the changelog in the first post.

                          1 Reply Last reply Reply Quote 2
                          • Purg.DerrenP
                            Purg.Derren
                            last edited by

                            Hi there! First of all, i love the new media detection way! Already reorganized my media directory, but my question is, how do i handle in Pegasus multi-disc games? (w/o using ES2) ...in ES2 i had same "problem" first, used there a subfolder and <folder> node in the gamelist.xml to add boxArt to the folder etc
                            Is there a way to add smth like a "sub-collection", inside a collection ?

                            fluffypillowF 1 Reply Last reply Reply Quote 0
                            • fluffypillowF
                              fluffypillow @Purg.Derren
                              last edited by

                              @purg-derren hmm not sure how to deal with that case, it feels kind of halfway between the frontend and the emulator's territory. I've heard some emulators can handle M3U files where you list the disk files, that'd be an ideal solution I think. Or if the emulator can't handle it, maybe a small launcher app that'd read and present it with some simple UI instead.

                              1 Reply Last reply Reply Quote 0
                              • M
                                msheehan79
                                last edited by

                                HI @fluffypillow - I’ve been keeping an eye on this project for some time and finally had a chance to install it on a Windows PC to check it out. It really is great! I love the clean UI and how smooth and fast it runs, and you’ve taken a lot of steps to make this a super flexible front end as well.

                                Can your parser support reading additional data from ES2 files if for example I added “launch” as a node there to set up per game launch commands, or added additional custom metadata using the x-prefix as you support in the regular metdata files?

                                fluffypillowF 1 Reply Last reply Reply Quote 0
                                • fluffypillowF
                                  fluffypillow @msheehan79
                                  last edited by

                                  @msheehan79 well the ES2 support is there mainly for compatibility, so I'd rather not add new features to the files that ES2 itself doesn't support. If a new node type becomes official on their side though, then yeah, support could be added after that.

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    msheehan79 @fluffypillow
                                    last edited by

                                    @fluffypillow yes that does make sense, thanks for replying. Just so I am not missing anything, is there any supported method to set per game launch commands while still using the ES2 metadata or is the only option to switch to the metadata.txt format and add there?

                                    I’m sure I can convert my files, just want to make sure I haven’t missed an option before I go that route.

                                    Thanks!

                                    fluffypillowF 1 Reply Last reply Reply Quote 0
                                    • fluffypillowF
                                      fluffypillow @msheehan79
                                      last edited by

                                      @msheehan79 there's no support for that in ES2's files I'm afraid, all games are run with the command set in the systems config. As for the conversion, this online tool might help with that too.

                                      M 1 Reply Last reply Reply Quote 0
                                      • fluffypillowF
                                        fluffypillow
                                        last edited by

                                        I have an experimental macOS build, could someone try if it actually works? You can get it here.

                                        L 1 Reply Last reply Reply Quote 0
                                        • M
                                          msheehan79 @fluffypillow
                                          last edited by msheehan79

                                          @fluffypillow Ok thanks again! I did see the conversion tool too.

                                          The reason for my question was because I have all of my gamelist files in MS Excel spreadsheets that I can export into the ES2 XML format pretty easily. I found the scraped data tended to be hit or miss so I had imported the XML gamelist files into Excel, then manually corrected and curated it there, where it is much easier to work with the data and format/filter/sort it etc and exporting it back into XML is a simple process.

                                          I spent a bit of time this evening and wrote up a very quick VBA script that should work to export from my Excel metadata into the Pegasus TXT file format, while also allowing me to add in the launch node so I can set up the custom launch scripts for the games that need it. I'm sure it'll need a few more tweaks but it should provide a nice and simple solution to allow keeping the metadata in a spreadsheet for easier updates and additions, and I can just export the updated metadata for Pegasus as needed.

                                          1 Reply Last reply Reply Quote 0
                                          • L
                                            lazd @fluffypillow
                                            last edited by lazd

                                            @fluffypillow said in Announcing Pegasus Frontend:

                                            I have an experimental macOS build, could someone try if it actually works?

                                            macOS High Sierra 10.13.2 (17C89) x86_64

                                            I fired it up and got the following:

                                            QQmlApplicationEngine failed to load component
                                            qrc:/frontend/main.qml:19 module "QtQuick" is not installed
                                            qrc:/frontend/main.qml:20 module "QtQuick.Window" is not installed
                                            qrc:/frontend/main.qml:19 module "QtQuick" is not installed
                                            qrc:/frontend/main.qml:20 module "QtQuick.Window" is not installed
                                            

                                            This didn't seem to register as a fatal error, as the application stayed open, but with no window displayed. I quit it, then installed QT with brew install qt5, which also installs QtQuick to /usr/local/Cellar/qt/5.11.2/qml/QtQuick/. I relaunched the application and got the same error.

                                            Let me know if you'd like me to try anything else or have a fresh build to try!

                                            fluffypillowF 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.