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.0m 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.
    • muldjordM
      muldjord @bhakta
      last edited by muldjord

      @bhakta You could import them into Skyscraper, and then use Skyscraper to generate the gamelist for Pegasus afterwards. That should work: https://github.com/muldjord/skyscraper/blob/master/docs/IMPORT.md

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

        @fluffypillow I've been testing out redream crashes, but one crash I was told is unrelated. After testing with a few non-dreamcast games as well, I can say that it might be related to pegasus. It's hard to reproduce. I'm testing by quickly exiting a game a few seconds after it loads. It happens more often with redream but I also tested with finalburn neo to verify it wasn't the redream emulator.

        When exiting an emulator, sometimes it will exit to this:Untitled-1.jpg

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

          @Darksavior Based on the screenshot, someone called the ps command, likely from a script, with invalid parameters. Pegasus doesn't do this, and probably neither your emulators, so the error should come from somewhere between them. And indeed, I just searched into the RetroPie code and found this line in runcommand. It says "if the parent process of the parent process of runcommand is EmuStation, reset the state of the terminal to its defaults". The error says ps (a command that tells info about running processes) was called with -p (short for process ID), which requires a parameter (ie. which process to examine), but this was missing. This happens if either $PPID is empty or the result of the call ps -o ppid= -p $PPID is empty. Both are cases that should never happen in theory, but looks like they still do occasionally.

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

            @fluffypillow Fast reply! Thanks. So who do I ask now? @mitu ? @BuZz ?

            mituM 1 Reply Last reply Reply Quote 0
            • mituM
              mitu Global Moderator @Darksavior
              last edited by

              @Darksavior I don't think that has anything to do with your errors, it's a benign message.

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

                @mitu Well, my pi hangs with that message sometimes. This has happened today when I was testing games for hours by quickly loading/exiting. First time I see this. I suppose loading games "normally" and playing them will probably be fine.

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

                  Weekly update! (it's been a while)

                  • Updated the Qt libraries 5.12.8: this may improve performance and stability, but please report if you run into any graphical issues. This also fixes the crashing on exit.
                  • Fixed the log file getting spammed with PNG profile warnings
                  • Fixed the OpenSSL issues on Ubuntu 19.04 and later
                  • Added support for QtQml.Models to be used in themes
                  • Updated the French translation

                  Also there have been some updates on the Linux distros in the last weeks (RetroPie 4.6, Ubuntu 20.04), so I've also updated the build configurations:

                  • The desktop Linux release is now built against Ubuntu 18.04, ie. it might not run on older releases
                  • The Raspberry releases are now built against Debian Buster (RetroPie 4.6), ie. it might not run on older releases

                  If you haven't updated your system yet, do not update Pegasus either. In case you did, you can still download the "stable" releases from pegasus-frontend.org. Let me know if this change ends up to be a problem.

                  KNOWN ISSUES

                  • Language autodetection fails for some reason (likely a Qt related bug). You can still change the language from the settings menu however.

                  Updates for package maintainers

                  • Pegasus now requires at least Qt 5.12.0 (the 5.9 LTS reaches end of life this month)

                  As always, let me know if you run into some issues or have some suggestions!

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

                    @fluffypillow Any chance you could elaborate on how QtQml.Models could be leveraged in a theme for someone who isn't an QML expert?

                    I was able to customize a theme to support adding/removing from a dynamic collection using api.memory and a QtSortFilterProxyModel, but the performance isn't where it needs to be, as I had to use an ExpressionFilter in the virtual collection and that really kills the speed when the api.allGames collection is large.

                    Wasn't sure if supporting QtQml.Models might mean we could essentially build a new source model within the theme instead of filtering off api.allGames. I had originally tried something along that lines to basically create a new model with the theme games in it instead of the filter approach I ended up using, but I couldn't get it to work quite right - probably more due to my limited knowledge of QML than anything.

                    Could be totally off the mark here, but even if not curious where I could go to understand what other potential use cases there would be for this new support!

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

                      @msheehan79 QtQml.Models can be used mainly to create new item lists, especially of visual types, that can be used as models. For example, see the first section here: https://doc.qt.io/qt-5/qml-qtqml-models-objectmodel.html. Actually I haven't used this yet, but someone wished to use it and was missing. Might come useful in the future though.Also you can find the full documentation here: https://doc.qt.io/qt-5/qtqml-models-qmlmodule.html.

                      1 Reply Last reply Reply Quote 0
                      • PlayingKarrdeP
                        PlayingKarrde
                        last edited by

                        @msheehan79 Qml.Models will mostly come in handy for making menus that don't consist of just a single item type (such as a game model). You can make an object model of your different buttons then use that model to populate a ListView. That's basically why I requested it as creating menus was a huge pain in the ass before.

                        It's interesting you point out ExpressionFilters being slow though. That's concerning as I've started implementing them in a big way. I haven't seen a performance impact yet but I'm only testing on PC and Nvidia Shield. I had hoped my next theme would be performant on pi as well. Is that where you're seeing this slowdown? I guess it's possible my collection isn't large enough to cause such a slowdown too though.

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

                          @fluffypillow @PlayingKarrde Ah ok, thanks for the insight. I was thinking more around building a data model (i.e. my dynamic games collection) than for visual components, so this helps clarify.

                          The challenge I believe with ExpressionFilters is it evaluates every row in the collection. My setup is definitely an extreme example, with something like 20k items, as I just haven't gotten round to actually whittling it down to stuff I'd actually play yet :) I am also doing a lot of custom collections, I am not sure if this is double counting games when they are in multiple collections.
                          But this provides a good barometer of performance. It takes about 15 seconds to iterate the full collection, so its noticeable. By comparison, a simple filter against say Favorites using ValueFilter took about 7-8 seconds, so about half the time.

                          I only evaluate the collection once on load or when the dynamic collection is added/removed, so its really only noticed when you leave a game and return to the frontend, or when you click the "Add to collection" button, but if you are surfing through games I can see the slow return to the frontend being a bit of a drag, so I'm probably going to try another approach.

                          This is on an older but still pretty decent x86 PC, Intel i5-2400 with 8GB RAM. I wouldn't dare try this sized collection on my RPi!

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

                            (Bi-)Weekly update! (2020-05-18)

                            A large number of internal changes have landed, related to the memory management of how games are stored. There should be no visible changes, but if you run into any odd behaviour, feel free to report it! Other than that:

                            • Theme API: All asset fields can now store multiple files (previously only videos and screenshots could do this). See also the documentation. screenshots and videos are now deprecated in favor of screenshotList and videoList -- they are still there for a while though, so no theme should break.
                            • Metadata files: Added support for custom sorting order for Collections -- similarly to the sort_title of Games, Collections now have a sort_by field. sort_by is also available for Games as an alias for sort title, if you wish to make the two entry types look the same.
                            • Theme API: Added a sortBy field to Collections and Games. sortTitle of Games is now deprecated (but not yet removed) in favor of this field.
                            • LaunchBox: Fixed sort title not being set in some cases
                            • LaunchBox: Fixed command line parameters not getting passed in certain cases
                            • LaunchBox: Added support for images without numeric suffix (ie. other than SomeGame-01.jpg, SomeGame.jpg that older versions used also works)
                            • Updated the documentation to follow last weeks' maintenance changes
                            • Minor performance and memory usage improvements
                            N 1 Reply Last reply Reply Quote 1
                            • M
                              mandrew
                              last edited by mandrew

                              @fluffypillow Pegasus is really awesome. I'm just getting into it now, but wanted to let you know that from a framework point of view, what you've built is much better and more capable than other systems I've seen, especially for Retropie. Thank you.

                              @PlayingKarrde Not sure if this is something that has been asked before, but I've downloaded your Switch theme (awesome, btw) and noticed that the UI should have sounds. I can't hear them. Is there something silly I'm missing? How do I turn the UI sounds on? I'm using Retropie, maybe that's why?

                              PlayingKarrdeP 1 Reply Last reply Reply Quote 0
                              • PlayingKarrdeP
                                PlayingKarrde @mandrew
                                last edited by

                                @mandrew I've noticed there's some issues with the sounds. I'll look into it for the next update. I haven't tested at all on RPi so I'll make sure to do that too.

                                M 1 Reply Last reply Reply Quote 0
                                • M
                                  mandrew @PlayingKarrde
                                  last edited by

                                  @PlayingKarrde Got it, thank you!

                                  1 Reply Last reply Reply Quote 0
                                  • N
                                    NeoBi @fluffypillow
                                    last edited by

                                    @fluffypillow Hi Fluffy ! I just build your project in release mode, unfortunately when I saw the size of my executable, It is only 4704 KB, while yours is 27704 KB. Do I miss something ? Thank you.

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

                                      @NeoBi Hi, when building C++ code you can either build statically, which places the dependencies directly into the executable, or dynamically, which loads them from the system at launch, resulting in smaller file size. It seems you've build dynamically, which is perfectly fine when you're building for yourself. On the other hand, the official releases are built statically, to not depend on system libraries as they may or may not be available on all OSes easily.

                                      N 1 Reply Last reply Reply Quote 0
                                      • S
                                        SQWK_7500
                                        last edited by

                                        @fluffypillow Is there any way I could contact you privately?

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

                                          @SQWK_7500 Hi, you can also find me on Discord, see https://pegasus-frontend.org/ for an invite.

                                          N 1 Reply Last reply Reply Quote 0
                                          • N
                                            NeoBi @fluffypillow
                                            last edited by

                                            @fluffypillow Oh ! Ok, thank you for your fast answer !

                                            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.